我想准备我的数据以避免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()必须有一个占位符。
有谁能告诉我我的代码在哪里错了?
此致
答案 0 :(得分:0)
prepare方法用于防止SQL注入。当您想要在查询中插入变量时,可以使用它。它接受占位符,例如%s表示字符串,%d表示整数,%f表示浮点数。
您的查询没有任何变量,因此您不需要准备方法。您发现错误是因为您没有使用任何占位符。
https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks