Wpdb prepare调用不正确

时间:2015-05-28 15:00:43

标签: php jquery sql wordpress wpdb

我想准备我的数据以避免SQL注入。所以我当前的工作代码显示了表格列中的数据列表:

global $wpdb;
$sliders = $wpdb->get_results('SELECT alias, title FROM wp_revslider_sliders', ARRAY_A);

echo '<select name="revslider">';
if ($sliders) {
    foreach($sliders as $slide){
        echo '<option value="'.$slide['alias'].'" '.($select_revslider_shortcode == $slide['alias'] ? 'selected=""' : '').'>'.$slide['title'].'</option>';
    }
}
echo '</select>';

我需要使用$wpdb->prepare来确保我的数据是从数据库中正确引入的。我目前的进展:

$sliders = $wpdb->query($wpdb->prepare("SELECT id, alias, title FROM wp_revslider_sliders", ARRAY_A));

这不起作用。我收到通知:

  

注意:错误地调用了wpdb :: prepare。查询参数   wpdb :: prepare()必须有一个占位符。

有谁能告诉我我的代码在哪里错了?

此致

1 个答案:

答案 0 :(得分:0)

prepare方法用于防止SQL注入。当您想要在查询中插入变量时,可以使用它。它接受占位符,例如%s表示字符串,%d表示整数,%f表示浮点数。

您的查询没有任何变量,因此您不需要准备方法。您发现错误是因为您没有使用任何占位符。

https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks