Pourquoi essayez-vous de vous préparer dans la fonction d'ouverture de session ? Je ne crois pas que la fonction d'écriture soit appelée plus d'une fois au cours d'une session, donc la préparer ouvertement ne fait pas grand-chose pour vous, autant le faire dans votre session d'écriture.
Quoi qu'il en soit, je pense que vous avez besoin d'un espace après le nom de la table et avant la liste des colonnes. Sans l'espace blanc, je pense que mysql agirait comme si vous essayiez d'appeler la fonction inexistante nommée session().
REPLACE INTO session (phpsessid, data) VALUES(?, ?)
Intéressant, lorsque j'exécute ce qui suit dans la CLI mysql, je semble obtenir un résultat différent.
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)