一个热爱网络的小学教师

WordPress升级3.5后主题报错: Missing argument 2 for wpdb::prepare()

最近在测试某款主题的时候发现除了问题,我在本地测试好之后上传到空间,页脚处出现这样的报错信息: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,经上网搜索,得知这个问题是Wordpress升级带来的问题。

3.5版的wordpress为了防止SQL注入引发站点的安全问题,修改了内部方法: wpdb::prepare() ,本来这个方法只需要填写一个参数即可,但是升级之后必须填入第二个参数,否则就会报错。

在出错主题的footer.php文件中会有类似如下的代码:

$post_datetimes = $wpdb->get_row($wpdb->prepare(“SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > 1970”));

在3.5版本之前,这样的写法是没有任何问题的,但是在3.5,上面的写法就是错的,因为少了一个参数正确的写法应当是:

prepare(“SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > 1970”,””));

在下面的代码中添加了一个空的参数即可解决这个问题。

升级3.5之后主题出现问题的童鞋们,赶快去修改过来吧!

赞(0) 打赏
转载请标明出处:高海鹏老师的博客 » WordPress升级3.5后主题报错: Missing argument 2 for wpdb::prepare()
分享到: 更多 (0)

留言 3

Protected by WP Anti Spam
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #0

    呃呃,我开始用WP的时候就已经是3.5了,没遇到这个问题
    话说今天早晨有3.5.1更新了

    FROYO11年前 (2013-01-25)回复
    • 只有某些写法不规范的主题才会出现此问题。

      高海鹏11年前 (2013-01-26)回复
  2. #0

    解决了!

    余斗11年前 (2013-01-16)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏