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

时间:2012-03-20 12:17:35

标签: php sql database object

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

问题如下:序列化对象只是部分进入数据库。 如果我回显查询字符串,将其复制并粘贴到phpMyAdmin->数据库查询,它将进入数据库已满,应该如此。 “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时相同的查询工作正常,但是当通过mysql_query函数执行时它不能正常工作?

2 个答案:

答案 0 :(得分:1)

不要这样做 - 不要动态创建更新语句。请改用参数化查询(请参阅question and answers on sqlinjection)。我假设它与未正确转义的数据有关(可以通过使用参数化查询来防止)。另外我假设由于之前的

而没有调用mysql_error()
  

返回声明

答案 1 :(得分:0)

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