Php sql字符串转义问题
是否可以在转义字符串中多次插入相同的值?即Php sql字符串转义问题,php,wordpress,Php,Wordpress,是否可以在转义字符串中多次插入相同的值?即 $wpdb->prepare("SELECT * FROM table WHERE (column1 = %s || column2 = %s || column3 = %s) AND this = $s", $search_terms,$that"); 如果没有,是否有人有条件构建器的好替代方案。SQL在选定的表上运行多次。有些表要搜索的列比其他表多,所以我创建了一个条件生成器。但现在我正试图逃避这些值以防止SQL注入 $condition
$wpdb->prepare("SELECT * FROM table WHERE (column1 = %s || column2 = %s || column3 = %s) AND this = $s", $search_terms,$that");
如果没有,是否有人有条件构建器的好替代方案。SQL在选定的表上运行多次。有些表要搜索的列比其他表多,所以我创建了一个条件生成器。但现在我正试图逃避这些值以防止SQL注入
$conditions = "";
$query_seperator = " || ";
$i = 0;
foreach($table['fields'] as $field){
if ($i < ($field_count-1)){
$conditions = $conditions . $field . " LIKE %s" . $query_seperator;
} else {
$conditions = $conditions . $field . " LIKE %s";
}
$i++;
}
$wpdb->prepare("SELECT * FROM table WHERE ($conditions) AND this = $s", $search_terms,$that");
您的查询似乎与
$wpdb->prepare("SELECT * FROM table WHERE %s IN (column1,column2,column3) AND this = $s", $search_terms,$that");
你不能那样做。其中,仅搜索字符串。它不会搜索列。谢谢你的回复。你试过了吗?因为它在我的服务器上运行得非常好。IN只是多个OR语句的快捷方式,MySQL在编译查询之前将其重写为这种形式。我会再试一次以确定。