以前插入序列化值时从未遇到过这个问题。
我有一个名为$prefs
:
$prefs=serialize(array( #logged-in preferences
'chatMsgs'=>10,
'forumThreads'=>10,
'forumReplies'=>10
));
其中,当序列化时,变为
a:3:{s:8:\"chatMsgs\";i:10;s:12:\"forumThreads\";i:10;s:12:\"forumReplies\";i:10;}
我的INSERT
查询如下:
INSERT INTO `general_data`(`email`,`pw`,`name`,`adr`,`male`,`regged`,`conf`,`prefs`)
VALUES ('$email', '$pw', '$name', '$adr', $sex, NOW(), $conf, '$prefs');
(male
/sex
是一个BIT(1)
,conf
存在int(9)
和prefs
存在text
)。
通常我的序列化查询会按预期插入,但在这种特殊情况下,由于某种原因,我收到以下错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 ''a:3:{s:8:\"chatMsgs\"' 附近使用正确的语法。
谁能提供一些关于我如何解决这个问题的见解?
EDIT
:我可以通过在base64中编码序列化字符串来解决这个问题,但是,这并不能解释这个错误的奇怪行为。