簡體   English   中英

如何使用php根據數組產生查詢

[英]how to use php to produce a query according to an array

$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;

結果無法顯示帶有“和”和“或”的查詢。

例如:查詢條件:SELECT * FROM表,其中Processor ='i3'或Memory ='8GB'或Memory ='32GB'。

正確的答案應該是“查詢字詞:SELECT * FROM表,其中Processor ='i3'AND Memory ='8GB'或Memory ='32GB'。

我無法修復您的代碼。 這是我的方法

$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") 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM