我将会话存储到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函数执行时它不能正常工作?
答案 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.'"';