插入序列化值时出现Snytax错误?

问题描述

| 我的代码
 $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
任何想法?     

解决方法

将其更改为单引号中包含的值。 当您将任何字符串传递给应该保存字符串值的任何列时,则必须将其括在引号中。
 $db->query_write(\"
            INSERT INTO \" . TABLE_PREFIX . \"event_mod 
                (event_meta)
            VALUES
                (\'\" . $meta_ar . \"\')
        \");
    ,使用PreparedStatement,您的序列化数组不会转义。