-1

大家好,我收到此错误消息:

Warning: Missing argument 2 for wpdb::prepare(), called in /home/url.com/wp-content/plugins/WPEC-Personalize-3.8/wpec-personalization.php on line 228 and 326 and defined in /home/url.com/wp-includes/wp-db.php on line 990

我在第 228 和 326 行找到了代码:

$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 %s WHERE pers_id = %d AND product_id = %d",
    $table_name, 
    $myresults->pers_id, 
    $product_id
));

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

参见示例:https ://www.americasfinestmailbox.com/products-page/birds/hummingbird-vertical/

任何帮助将不胜感激,因为插件作者不再支持此插件。

我在这里粘贴了整个代码:http: //www.pastebin.com/gxqEjee2

谢谢!威廉

4

1 回答 1

0

你的问题是设计问题。当您听到“这对安全性有好处”时,您想使用准备好的声明。但问题是您正在使用它们,就好像它们不是准备好的语句一样。

当您使用准备好的语句时,您希望您的程序像这样工作:

  1. 发送和解析不带参数值的查询
  2. 发送参数
  3. 执行查询并到达 2,而无论参数如何,您都需要查询。

所以你不能在查询中给出参数你必须给出占位符,在worldpress中,以%. 然后,在您prepare的方法中,您将给出这些值,以便它们将被安全地保护和发送。

于 2013-02-04T17:04:26.197 回答