Varför försöker du göra din förberedelse i sessionsöppningsfunktionen? Jag tror inte att skrivfunktionen anropas mer än en gång under en session, så att förbereda den i det fria gör inte mycket för dig, du kan lika gärna göra det i din sessionsskrivning.
Hur som helst tror jag att du behöver lite blanksteg efter tabellnamnet och före kolumnlistan. Utan blanktecken tror jag att mysql skulle agera som om du försökte anropa den icke-existerande funktionen som heter session().
REPLACE INTO session (phpsessid, data) VALUES(?, ?)
Intressant, när jag kör nedanstående i mysql CLI verkar jag få ett annat resultat.
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)