I have to following code:
http://www.nomorepasting.com/getpaste.php?pasteid=22987
If PHPSESSID is not already in the table the REPLACE INTO query works just fine, however if PHPSESSID exists the call to execute succeeds but sqlstate is set to ‘HY000’ which isn’t very helpful and $_mysqli_session_write->errno and $_mysqli_session_write->error are both empty and the data column doesn’t update.
I am fairly certain that the problem is in my script somewhere, as manually executing the REPLACE INTO from mysql works fine regardless of whether of not the PHPSESSID is in the table.
So as it turns out there are other issues with using REPLACE that I was not aware of:
Bug #10795: REPLACE reallocates new AUTO_INCREMENT (Which according to the comments is not actually a bug but the ‘expected’ behaviour)
As a result my id field keeps getting incremented so the better solution is to use something along the lines of:
This also prevents any foreign key constraints from breaking and potential causing data integrity problems.