Wordpress 4.2.2更新 - 失败的wpdb->插入

San*_*eev 9 mysql wordpress wordpress-plugin

上下文

我一直在创建一个新的wordpress博客作为个人网站.部分原因是,我有一个自定义的联系表格,人们会在其中详细说明与我取得联系.它一直工作到早上,之后我因安全原因更新到4.2.2v.

问题

更新后,表单无法将任何信息保存到数据库中.在$wpdb->insert_id将返回0,查询是一样的,页面是一样的,一切都是一样的.唯一的变化是我从4.2.1v升级到4.2.2v.

最近的更新是否有任何问题,或者在按手动更新后我是否还需要执行更多步骤?

调试完成了......

我已确保更新数据库版本.它显示31535.使用时调试$wpdb->lastquery$wpdb->print_error()我得到

WordPress database error: []
SHOW FULL COLUMNS FROM `wp_tst_tbl_contacts`
Run Code Online (Sandbox Code Playgroud)

我无法理解这里有什么问题.如果我show full columns使用相同的用户wp用户凭据运行相同的插入查询以及上面的命令行,它可以很好地工作.

注意:如果还有其他信息,请询问.

San*_*eev 16

我找到了问题的原因.它由于列宽限制.

我有一个VARCHAR(9)列,我发送的数据是16个字符长度.4.2.2中的新更改获取表元并对数据进行裁剪,使其适合DB中定义的列大小.它还比较了作物前和作物后的数据.如果它们不匹配,那就失败了.

问题是,它无声地失败而没有抛出错误.我通过调试wpincludes/wp-db.php文件找到了这个.

请检查您的列限制和您发送的列数据长度.

一旦我增加了列宽(因为数据肯定会超过9个字符),问题就解决了.

  • 当MySQL完全能够截断插入时,wordpress无需检查字符串长度.无声地失败是Word Presses故障的可怕失败.谢谢你找出原因! (3认同)