首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql没有正确插入序列化的php数据(在符号处切断)?

Mysql没有正确插入序列化的php数据(在符号处切断)?
EN

Stack Overflow用户
提问于 2012-06-13 02:10:40
回答 2查看 1.6K关注 0票数 1

我正在序列化php中的一些数组,并将它们插入mysql TEXT列中。

有些数据插入得很糟糕。插入语句的一个示例,

代码语言:javascript
复制
$q = $this -> dbc -> prepare("INSERT INTO table (files) VALUES(?)");
$q -> execute(array(serialize($files)));

strlen数组的$files值小于65,000的值,因此由于对TEXT mysql列的最大插入,它不会被缩短。

插入前的serialized($files)数据,

代码语言:javascript
复制
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值,

代码语言:javascript
复制
a:4:{s:4:"CD 1";a:20:{s:32:"01 - Can

它似乎缩短了字符´,我对它的理解是,它将正确地转义所有字符为准备的查询?

请注意,我的PDO连接被设置为UTF-8

我怎么才能阻止这一切的发生?

谢谢

编辑

我可以确认这是由于设置了与UTF-8的连接,对于为什么PDO会这样做有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2012-06-13 05:03:45

php中的“”反引号字符是系统的快捷方式(“反引号之间的文本”)

请参阅手册

您需要正确地检查它是否被引用或转义。

票数 1
EN

Stack Overflow用户

发布于 2012-06-13 02:47:07

试着不要深入到编码兔子洞的字符中去;通过确保你的字符串是UTF-8,你会有更多的运气吗?

代码语言:javascript
复制
$q = $this -> dbc -> prepare("INSERT INTO table (files) VALUES(?)");
$q -> execute( array( utf8_encode( serialize( $files ) ) ) );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11007348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档