我的代码:
$meta_ar = array("event_id" => $event_id, "user_id" => $user_id, "dbe" => $dbe, "hbe" => $hbe, "forum_id" => 'dummy_forum');
$meta_ar = serialize($meta_ar);
$db->query_write("
INSERT INTO " . TABLE_PREFIX . "event_mod
(event_meta)
VALUES
(" . $meta_ar . ")
");
错误:
Invalid SQL:
INSERT INTO event_mod
(event_meta)
VALUES
(a:5:{s:8:"event_id";N;s:7:"user_id";s:1:"1";s:3:"dbe";i:45;s:3:"hbe";i:32;s:8:"forum_id";s:11:"dummy_forum";});
MySQL Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':5:{s:8:"event_id";N;s:7:"user_id";s:1:"1";s:3:"dbe";i:45;s:3:"hbe";i:32;s:8:"fo' at line 4
Error Number : 1064
有什么想法吗?
答案 0 :(得分:2)
将其更改为以单引号括起来的值。
当您将任何字符串传递给任何应该包含字符串值的列时,必须将其括在引号中。
$db->query_write("
INSERT INTO " . TABLE_PREFIX . "event_mod
(event_meta)
VALUES
('" . $meta_ar . "')
");
答案 1 :(得分:1)
使用PreparedStatement,您的序列化数组不会被转义。