【发布时间】:2015-07-12 22:42:49
【问题描述】:
php mysql 更新序列化数据有问题。
我的序列化数据
a:1:{i:0;a:3:{s:5:"image";s:4:"5812";s:5:"title";s:14:"Day 1 : LOREM";s:4:"desc";s:416:"Lorem Ipsum is 'simply dummy' text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500's, when an unknown printer ";}}
问题出在文本中,例如 'simply dummy' 表示撇号。
Mysql 更新声明
$conSave="update serialized_data set value='$str1' where id='{$_POST['key_id']}'";
$conSaveData = mysql_query($conSave);
如何解决序列化数据中的这个问题?
MySQLi 更新声明
$stmt = $con->stmt_init();
$stmt->prepare("Update serialized_data set value=? WHERE id = ?");
$stmt->bind_param("ss",$a,$b);
$a = $str1;
$b = $_POST['key_id'];
$stmt->execute();
【问题讨论】:
-
字符串值在插入 SQL 语句之前需要转义,以将引号转换为不会破坏查询的形式
-
但一般不建议将序列化数据存储在数据库中
-
你真的应该使用 MySQLi 或 PDO 和准备好的语句/绑定变量......毕竟现在是 2015 年......然后你就不需要转义字符串了
-
@MarkBaker 感谢您的回复。我尝试使用 MySQLi 更新 bind_param 并执行但更新后序列化数据损坏...
-
也许你应该展示你用于 MySQLi 的代码和绑定参数
标签: php mysql serialization