以前は、シリアル化された値を挿入する際にこの問題が発生したことはありませんでした。
という配列があり$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 でエンコードすることでこの問題を回避できますが、これではこのエラーの奇妙な動作は説明できません。