我正在执行wpdb->insert()
. 当一个字段包含特殊字段时,插入未完成,我得到错误
Wordpress数据库中的查询显示完整列时出错wp_my_table
如果我没有使用特殊字符,则插入操作是正确的。
显然,列排序规则是正确的,但有些地方出错了。我看到了这个post answers 但正如我所说,我的排序似乎是正确的。
这是我的表定义:
SHOW CREATE TABLE wp_my_table;
CREATE TABLE `wp_my_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c_name` varchar(50) COLLATE utf8mb4_unicode_520_ci NOT NULL,
`creation_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
这是insert语句:
$wpdb->insert(\'wp_my_table\',
[\'c_name\' => $_POST[\'c_name\'],
\'creation_date\' => date(\'Y-m-d H:i:s\')
]);
正在添加
esc_sql
或
esc_html
没有帮助。
实际上,错误不在查询或插入本身中,而是在$\\u POST[\'c\\u name\']中,因为如果我使用硬编码字符串调用,查询将正常工作:
$wpdb->insert(\'wp_my_table\',
[\'c_name\' => \'1º áá\',
\'creation_date\' => date(\'Y-m-d H:i:s\')
]);