2017-05-12 18 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") 
相關問題