【问题标题】:PHP Warning: Missing argument 2 for wpdb::prepare() Wordpress 3.5 (Updated)PHP 警告:缺少 wpdb::prepare() Wordpress 3.5 的参数 2(更新)
【发布时间】:2013-01-31 01:12:16
【问题描述】:

我收到错误消息:

警告:wpdb::prepare() 缺少参数 2,调用 /home/url.com/wp-content/plugins/WPEC-Personalize-3.8/wpec-personalization.php 在第 322 行并在 /home/url.com/wp-includes/wp-db.php 中定义 990

我在第 322 行找到了代码:

$add = $wpdb->get_var($wpdb->prepare("SELECT enabled FROM ". $table_name ." WHERE pers_id  = ". $myresults->pers_id." AND product_id = ".$product_id));

我正在尝试将其更新为新的 wordpress(3.5 查询)标准:

$add = $wpdb->get_var($wpdb->prepare("SELECT enabled FROM %d WHERE pers_id  = %d AND product_id = %s",$table_name, $myresults->pers_id, $product_id));

我不确定我做错了什么,但是当我更新上面的代码时,我停止收到错误消息,但每次我更新产品时,它都会复制所有自定义字段。

【问题讨论】:

  • 最好只升级插件。无论如何,插件作者应该已经解决了这个问题。
  • 插件作者不再支持插件... :-(

标签: php wordpress


【解决方案1】:

%s用于表示参数为字符串,%d用于表示数字。在发布到您的问题的代码中,这些使用不正确。修复它们:

$add = $wpdb->get_var($wpdb->prepare(
    "SELECT enabled FROM %s WHERE pers_id = %d AND product_id = %d",
//                       ^^ These are wrong in your posted code ^^
    $table_name,
    $myresults->pers_id,
    $product_id
));

【讨论】:

  • 能否请您指出正确的方向来解决它们或弄清楚它们应该是什么?感谢您的帮助!
【解决方案2】:

将此代码粘贴到您的 wp-config.php 文件中

@ini_set('display_errors', 0);

我也通过了这段代码。现在没有显示警告消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多