2017-05-12 19 views
0
$sql_t=Array ([Processor] => Array ([0] => i3) [Memory] => Array ([0] => 8GB [1] => 32GB)) 


$sql_s="SELECT * FROM table " 
    if(empty($sql_t)) 
    $sql=$sql_s; 
    else{ 
    $sql=$sql_s.'where '; 
    $first=true; 
    foreach($sql_t as $a =>$b){ 
     foreach ($b as $x => $y){ 
     if(count($b)==1){ 
     $sql .=(($first) ? "":" AND ")."$a='$y'"; 
     $first=false;} 
     else{ 
      $sql .=(($first) ? "":" OR ")."$a='$y'";  
     $first=false;} 
    } 
    } 
    } 

echo "<br/>query terms: ".$sql; 

结果无法用“and”和“or”显示查询。如何使用php根据数组产生查询

例如:查询条件:SELECT * FROM表where处理器='i3'或内存='8GB'或内存='32GB'。

权ansower应该是“查询词:SELECT * FROM表,其中处理器=‘I3’和内存=‘8GB’或内存=‘32GB’

+0

我怀疑这是“正确”的答案! – Strawberry

+0

你必须使用()登录查询,得到的条件结合起来,这是不 –

回答

0

我不能修复您的代码,这是我的方法

$sql_s="SELECT * FROM table where "; 
$sql_t= Array ( 
     'Processor' => Array ('i3'), 
     'Memory' => Array ('8GB','32GB') 
); 

foreach($sql_t as $a =>&$b) { 
    if(count($b) > 1) { 
     $b = "`$a` in (\"". implode('", "', $b) .'")'; 
    } 
    else { 
     $b = "`$a` = \"" . $b[0] . '"'; 
    } 
} 

$sql = $sql_s . implode (' AND ', $sql_t); 

// SELECT * FROM table where `Processor` = "i3" AND `Memory` in ("8GB", "32GB") 
相关问题