SQL 使用数组中的多个动态条件查询 select

SQL query select with multiple dynamic conditions from array

我想使用预先存储在数组中的条件执行 SELECT 查询。
然而,这个数组将根据传递的属性数量动态填充。

属性将存储在 MySQL 数据库中,如下所示:

| car_id | brand | fwd | ac | abs | gasoline | diesel |
--------------------------------------------------------
| 000001 |   VW  |  0  |  1 |  1  |     0    |    1   |

然后变量将通过表单select编辑。

wd = isset( $_POST['fwd'] );      
$diesel = isset( $_POST['diesel'] );                
$gasoline = isset( $_POST['gasoline'] );              
$ac = isset( $_POST['ac'] );                          
$abs = isset( $_POST['abs'] );     

$features = array();

if (wd == true) {          
    array_push($features, "fwd");        
}     
if ($diesel == true) {                       
    array_push($featuresn, "diesel");                 
}                    
if ($gasoline == true) {                    
    array_push($features, "gasoline");                    
}                   
if ($ac == true) {                    
    array_push($features, "ac");                    
}                   
if ($abs == true) {                    
    array_push($features, "abs");                
}              

这里是我找不到问题答案的地方;
"static" select 查询将不起作用,因为此时数组 $properties 可以具有不同数量和类型的值:

$features ([0] => fwd [1] => abs [2] => ac)  
$features ([0] => fwd [1] => abs [2] => ac [3] => diesel)   
$features ([0] => abs [1] => ac  [2] => gasoline)   

无法弄清楚实际的语法,所以这里是我想要的外行术语:

SELECT car_id FROM car_list WHERE [firstarrayvalue==1] AND [secondarrayvalue==1] AND [thirdarrayvalue==1] 

直到数组的所有值都被用作条件。

我建议准备一个数组中的所有 where 子句并将它们内爆到查询中。

foreach($features as $f) {
   $sqlfeatures[] = "$f = 1";
}

$sql = "SELECT car_id FROM car_list WHERE ".implode(' AND ', $sqlfeatures);

或者简单的一行

"SELECT car_id FROM car_list WHERE ".implode(' = 1 AND ', $features)." = 1";