php – 使用引号保存到MySQL序列化信息

前端之家收集整理的这篇文章主要介绍了php – 使用引号保存到MySQL序列化信息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

试图将序列化的字符串保存到sql,但后来我因为引号而无法将其反序列化.

例如,字符串是“te’st”,序列化后我们有

s:5:"te'st";

但要将其保存到sql,我们需要添加斜杠,而我正在做

serialize(addslashes($string))

在此之后,在我们的MysqL数据库中我们有

s:6:"te'st";

这就是问题所在. s:6表示我们有6个符号字符串,但我们的“te’st”只有5,所以当我们尝试反序列化时,我们会收到错误.

怎么解决?尝试了htmlspecialchars和MysqL_real_escape_string

更新:

我如何使用MysqL_real_escape_string

 MysqL_query("INSERT INTO `table`(`string`) VALUES ('" . serialize(array('iId' =>$asqlResult['typeID'],'sName' => MysqL_real_escape_string($sScanResultLine))) . "')");
最佳答案
您应该在序列化之后通过escape函数传递数据,而不是之前 – 这就是您现在正在做的事情.

$serialized = MysqL_real_escape_string(serialize($data));

使用PDO或MysqLi的参数化查询,您可以完全忘记转义.

原文链接:https://www.f2er.com/mysql/434006.html

猜你在找的MySQL相关文章