以前は、シリアル化された値を挿入する際にこの問題が発生したことはありませんでした。
という配列があり$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 構文にエラーがあります。2 行目の ''a:3:{s:8:\"chatMsgs\"' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
どうすればこの問題を解決できるかについて、誰か洞察を提供してもらえますか?
EDIT
:シリアル化された文字列を base64 でエンコードすることでこの問題を回避できますが、これではこのエラーの奇妙な動作は説明できません。