Waarom probeer je je voorbereiding te doen in de sessie open functie? Ik geloof niet dat de schrijffunctie meer dan één keer wordt aangeroepen tijdens een sessie, dus het voorbereiden in de open lucht doet niet veel voor je, je kunt dat net zo goed in je sessie schrijven doen.
Hoe dan ook, ik geloof dat je wat witruimte nodig hebt na de tabelnaam en vóór de kolomlijst. Zonder de witruimte geloof ik dat mysql zou werken alsof je de niet-bestaande functie met de naam session() probeert aan te roepen.
REPLACE INTO session (phpsessid, data) VALUES(?, ?)
Interessant, als ik het onderstaande in de mysql CLI uitvoer, krijg ik een ander resultaat.
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)