序列化对象部分存储到数据库


serialized object stores to database partially

我将会话存储到MySQL数据库中。会话数据被序列化并存储到DB单元中。

问题如下:序列化的对象仅部分进入数据库。如果我回显查询字符串,将其复制并粘贴到phpMyAdmin->databasequery中,它将进入数据库full,这是应该的。"echo-mysql_error"未显示任何错误。编码不是原因,我已经严格声明了。这是我使用的一段代码。

$sql = "UPDATE sessions
SET SESSION_ID='$id', ACCESS='$access', DATA='".stripslashes($data)."', USER_ID='$username' WHERE SESSION_ID = '$id'";
echo("<br>".$sql."<br>");
return mysql_query($sql, $_sess_db);
echo mysql_error($_sess_db);

我该怎么修?为什么当我将粘贴复制到phpmyadmin中时,同样的查询可以正常工作,但通过mysqlquery函数执行时却不能正常工作?

不要这样做-不要动态创建update语句。请改用参数化查询(请参阅sqlinjection的问答)。我认为这与未正确转义的datta有关(可以通过使用参数化查询来防止)。另外,我假设mysql_error()没有被调用,因为之前的

返回语句

$sql= 'UPDATE `sessions` 
SET `SESSION_ID`= "'.$id.'", 
`ACCESS`= "'.$access.'", 
`DATA`= '''.str_replace("'", "''", $data).''', 
`USER_ID`= "'.$username.'" 
WHERE `SESSION_ID`= "'.$id.'"';