Защо се опитвате да се подготвите във функцията за отваряне на сесията? Не вярвам, че функцията за запис се извиква повече от веднъж по време на сесия, така че подготовката й на открито не прави много за вас, можете също да направите това при записа на сесията.
Както и да е, вярвам, че имате нужда от малко интервал след името на таблицата и преди списъка с колони. Без интервала вярвам, че mysql би действал така, сякаш се опитвате да извикате несъществуваща функция с име session().
REPLACE INTO session (phpsessid, data) VALUES(?, ?)
Интересно, когато стартирам по-долу в mysql CLI, изглежда получавам различен резултат.
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)