[英]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.