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在编译查询之前将其重写为这种形式。我会再试一次以确定。