我一直在创建一个新的wordpress博客作为个人网站。部分原因是,我有一个自定义的联系表格,人们会在其中提供详细信息以便与我取得联系。它一直工作到早上,之后我因安全原因更新到4.2.2v。
更新后,表单无法将任何信息保存到数据库中。 $wpdb->insert_id
返回0.查询是相同的,页面是相同的,一切都是一样的。唯一的变化是我从4.2.1v升级到4.2.2v。
最新更新是否有问题,或者我必须在word press manual update之后再执行更多步骤?
我已确保更新数据库版本。它显示31535.使用$wpdb->lastquery
和$wpdb->print_error()
进行调试时,我得到了
WordPress database error: []
SHOW FULL COLUMNS FROM `wp_tst_tbl_contacts`
我无法理解这里有什么问题。如果我使用相同的用户wp用户凭据运行相同的插入查询以及上面的show full columns
命令行,它可以完美地运行。
注意:如果还有其他信息,请询问。
答案 0 :(得分:15)
我发现问题的原因。这是由于列宽限制。
我有一个VARCHAR(9)列,我发送的数据是16个字符长度。 4.2.2中的新更改获取表元并对数据进行裁剪,使其适合DB中定义的列大小。它还比较了作物前和作物后的数据。如果他们不匹配,那就失败了。
问题是,它无声地失败而没有抛出错误。我通过调试wpincludes / wp-db.php文件找到了这个。
请检查您的色谱柱限制和您发送的色谱柱数据长度。
一旦我增加了列宽(因为数据肯定会超过9个字符),问题就解决了。
答案 1 :(得分:2)
我遇到了同样的问题,结果是一些未转义的值被从csv导入函数推送到数据库中。
我在适当情况下应用适当的esc_url()
和/或esc_attr()
和/或esc_html()
来清理插入前的值,然后查询成功运行。