• 售前

  • 售后

热门帖子
入门百科

WordPress 3.5 与 wpdb::prepare() 报错办理办法

[复制链接]
戏做顿 显示全部楼层 发表于 2021-8-15 19:50:26 |阅读模式 打印 上一主题 下一主题
WordPress 3.5 正式发布, 这个版本包括大量更新. 启用了最新的相应式布局默认主题 Twenty Twelve; 改版了 Admin 界面, 更加简洁而且针对移动装备进行了优化; Media 功能也得到极大的提高, 现在更加没有来由使用其他图床服务了.
好话说完了, 是时间 "但是" 了. 但是... WordPress 承袭一直的作风, 也偷偷改了一些内部方法, 现在
  1. wpdb::prepare()
复制代码
必须填入第二个参数, 否则报错如下.
  1. Warning: Missing argument 2 for wpdb::prepare(), called in xxx.php on line 75 and defined in /www/wp-includes/wp-db.php on line 990
复制代码

wpdb::prepare() 的第二个参数从技能上 WordPress 这样修改
  1. prepare
复制代码
并没有错, 由于这是用来组装 SQL 语句的方法, 按常理来说必须有带变量的字符串作为第一个参数和第二个作为变量的参数, 这是为了避免 SQL 注入所引起的安全题目. 但是 WordPress 从 2.2 大概更早版本允许了忽略第二个参数的写法, 现在突然令第二个参数成为必填, 肯定导致很多主题和插件不能正常使用.
我发布的所有 WordPress 主题和最新评论插件 WP-RecentComments 都中枪了. 感谢 neoner 提示, 半个月前我更新 WP-RecentComments 解决了这个题目, 但还没偶然间改主题, 由于主题审核太麻烦了.
解决办法在更新主题之前, 我先在这里说说解决办法, 让用户们本身可以先解决一下, 信赖还有其他主题大概插件可能也会有类似题目, 希望对各人有帮助.
    我们需要先定位出现题目的文件和代码. PHP 的代码报错很精准的, 打开报错提示中的文件 (前一个文件, 不是 wp-db.php), 找到代码
    1. $wpdb->prepare
    复制代码
    .为该方法添加一个空串作为第二个参数, 比如:
    1. $wpdb->prepare('xxx');
    复制代码
    改为
    1. $wpdb->prepare('xxx', '');
    复制代码
    即可.
    总结    WordPress 也不是第一次偷偷修改方法调用方式了, WordPress 2.7 的时间也要求
  1. comments_template
复制代码
必须输入第二个方法, 但是当时是为了扩展功能, 这次我真的不解. 除了安全考虑, WordPress 也可能故意镌汰一些不积极更新的主题, 我的主题明显向后兼容做得很好的, 实在太没节操了.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作