Perché stai cercando di fare la tua preparazione nella funzione di apertura della sessione? Non credo che la funzione di scrittura venga chiamata più di una volta durante una sessione, quindi prepararla all'aperto non fa molto per te, potresti anche farlo nella tua sessione di scrittura.
Ad ogni modo, credo che tu abbia bisogno di uno spazio bianco dopo il nome della tabella e prima dell'elenco delle colonne. Senza lo spazio bianco credo che mysql si comporterebbe come se stessi provando a chiamare la funzione inesistente denominata session().
REPLACE INTO session (phpsessid, data) VALUES(?, ?)
Interessante, quando eseguo quanto segue nella CLI di mysql mi sembra di ottenere un risultato diverso.
mysql> select count (*);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*)' at line 1
mysql> select count(*);
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)