我正在尝试使用示例数组下面的代码将一个类似于下面的数组的数组存储到数据库中的一个单元格中。不幸的是,WordPress似乎不想保存它,并不断抛出一个数据库错误(如底部的错误)。更改数组中数据的顺序会更改错误的位置,该位置与任何特定字符无关。
示例数组(实际数组略有不同):
$data = array();
$data[\'twitter\'] => array( \'key1\' => \'64 digit long string\', \'key2\' => \'63 digits\');
$data[\'facebook\'] => array( \'key1\' => \'64 digit long string\', \'key2\' => \'63 digits\');
应该注意的是,要插入的列被设置为varchar 1000(因此不是数据过长的问题)
样本插入代码:
$serialized_data = maybe_serialize($data);
$fire = $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET oauth = %s WHERE email = %s", $serialized_data, $email ) );
示例错误:(请注意,出于安全原因,实际有效负载已被替换,但演示数据在解剖学上是正确的。相同的格式,相同的字符类型。只是随机的)
WordPress database 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 \'\'wp_custom_4\' WHERE email = \'[email protected]\' SET tasks = \'a:1:{s:7:\\"twitte\' at line 1]
UPDATE \'wp_custom_4\' WHERE email = \'[email protected]\' SET tasks = \'a:1:{s:7:\\"twitter\\";a:4:{s:11:\\"oauth_token\\";s:50:\\"128310837-uY4xWwegwegmwIUBxWWf7gilcqQWRGWRGWzeV3tU26N\\";s:18:\\"oauth_token_secret\\";s:45:\\"MPfJMJULgjD8JwoyAsZUEHRWRGPXMrqMgzBOyvVFPtm5s\\";s:7:\\"user_id\\";s:9:\\"1282424237\\";s:11:\\"screen_name\\";s:9:\\"sampleuser\\";}}\'
这也不是所采用的序列化方法的结果。我尝试使用serialize()、json\\u encode(),但也没有对其进行序列化