【问题标题】:WordPress site giving the following error: Missing argument 2 for wpdb::prepare(). Convert?WordPress 网站出现以下错误:wpdb::prepare() 缺少参数 2。转变?
【发布时间】:2016-10-10 19:26:32
【问题描述】:

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

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

图片:

谁能告诉我出了什么问题,如果有人转换/修复这段代码,我将不胜感激。

我: 我是一名业余编码员,只了解基础知识,还没有学过 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));

【问题讨论】:

  • 你不应该自己处理这个 - 联系插件的作者或找到一个不同的插件来做同样的事情。您不想让自己处于不了解插件的情况下对其进行更改。

标签: php wordpress


【解决方案1】:

您不必为第一个查询使用$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));

【讨论】:

  • 非常感谢您的帮助。其实这段代码是主题开发者写的,我不懂php。
  • 如果我照原样复制您更正的代码并将其粘贴到原始代码的位置,它会顺利完成工作吗?
  • 我没有测试它,你必须尝试一下 :) 很可能它会工作。
  • 可能该主题是为早于 3.5 版的 WordPress 开发的,当时 prepare 方法没有预期 2 个强制参数。
  • 是的。这是我在谷歌上查找后得出的结论,也是一个老主题,也不太受欢迎。
猜你喜欢
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
相关资源
最近更新 更多