【发布时间】:2012-06-13 02:10:40
【问题描述】:
我在 php 中序列化一些数组并将它们插入到 mysql TEXT 列中。
某些数据插入不正确。一个插入语句的例子,
$q = $this -> dbc -> prepare("INSERT INTO table (files) VALUES(?)");
$q -> execute(array(serialize($files)));
$files 数组的strlen 的值小于 65,000 的值,因此不会因为最大插入到 TEXT mysql 列而被缩短。
插入前serialized($files)的数据,
string 'a:4:{s:4:"CD 1";a:20:{s:32:"01 - Can´t Talk To That Girl.mp3";i:4558470;s:22:"02 - No Pla // CONTINUES FOR SOME TIME
从数据库中获取$files 的值,
a:4:{s:4:"CD 1";a:20:{s:32:"01 - Can
它似乎在字符 ´ 处缩短了,我对 PDO 的理解是它会正确地转义准备查询的所有字符?
请注意我的 PDO 连接设置为 UTF-8?
我怎样才能阻止这种情况发生?
谢谢
编辑
我可以确认这是由于将连接设置为UTF-8 对 PDO 为何会这样做有任何想法吗?
【问题讨论】:
-
每个 UTF-8 字符最多可占用 3 个字节 stackoverflow.com/a/4420195/329062
标签: php mysql pdo prepared-statement