加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-11 23:38:41 所属栏目:MySql教程 来源:网络整理
导读:试图将序列化的字符串保存到SQL,但后来我因为引号而无法将其反序列化. 例如,字符串是“test”,序列化后我们有 s:5:"te'st"; 但要将其保存到SQL,我们需要添加斜杠,而我正在做 serialize(addslashes($string)) 在此之后,在我们的MySQL数据库中我们有 s:6:"te's

试图将序列化的字符串保存到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的参数化查询,您可以完全忘记转义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读