WordPress网站给出以下错误:缺少wpdb :: prepare()的参数2。兑换?

时间:2016-10-10 19:26:32

标签: php wordpress

我的问题是,在我的Wordpress CMS中添加新插件后,我的网站以及Wordpress CMS显示PHP错误:

  

警告:缺少wpdb :: prepare()的参数2,在第433行的/home/a4921378/public_html/wp-content/themes/xscholar/framework/includes/core-functions.php中调用,并在/ home中定义第1285行/a4921378/public_html/wp-includes/wp-db.php

图片:

Error Image

有人可以告诉我出了什么问题,如果有人转换/修复这段代码,我会非常感激。

我: 我是一名业余编码员,只了解基础知识并且尚未学习PHP,我经常使用Wordpress,但之前从未出现过类似的东西。我一直想弄清楚什么是错的但是在2个小时内没有成功。

我已访问了php-warning-missing-argument-2-for-wpdb-preparemissing-argument-2-for-wpdbprepare

页面
$terms = $wpdb->get_results($wpdb->prepare( 'SELECT name, slug FROM ' . $wpdb->prefix . 'terms, ' . $wpdb->prefix . 'term_taxonomy WHERE ' . $wpdb->prefix . 'terms.term_id = ' . $wpdb->prefix . 'term_taxonomy.term_id AND taxonomy = "product_cat" ORDER BY name ASC;'));
$wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url));

1 个答案:

答案 0 :(得分:0)

您的第一个查询不必使用$wpdb->prepare,因为查询没有任何占位符(What a placeholder is?)。只需使用:

$terms = $wpdb->get_results('SELECT name, slug FROM ' . $wpdb->prefix . 'terms, ' . $wpdb->prefix . 'term_taxonomy WHERE ' . $wpdb->prefix . 'terms.term_id = ' . $wpdb->prefix . 'term_taxonomy.term_id AND taxonomy = "product_cat" ORDER BY name ASC;');

您的第二个查询有一个占位符(%s),但它包含在引号中。它不应该被包装,prepare方法会处理它。只需使用:

$wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = %s AND wposts.post_type = 'attachment'", $attachment_url));