2017-05-12 11 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テーブルのProcessor = 'i3' ORメモリ= '8GB'またはメモリ= '32GB'。

右ansowerは、「クエリ用語でなければなりません:。テーブルどこからプロセッサ= 『I3』 *選択して、メモリー= 『8ギガバイト』 ORメモリー= 『32ギガバイト』

+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") 
関連する問題