2016-08-30 10 views
0

さまざまな選択が可能なHTMLテーブルがあります。それぞれの値を含む選択された変数は、配列$data[]を構築します。さて、この配列では、すべての選択された条件を満たす必要があるSQLリクエストを行いたいと思います。これは私が次のリクエストが必要であることを、意味:複数のAND条件を持つ配列からWHERE句を生成する方法

SELECT * FROM fruitgroups 
WHERE $selection[1] = $value[1] 
    AND $selection[2] = $value[2] 
    AND $selection[3] = $value[3] 
    etc ... 

誰でも正確に文字列を生成したループで私を助けてください:

... 
$selection[1] = $value[1] 
AND $selection[2] = $value[2] 
AND $selection[3] = $value[3] 
... etc ... 

を...私は要求のために必要なことを?

ありがとうございます!

+0

[foreach](http://php.net/foreach)、配列を作成し、[implode](http://php.net/implode) –

+0

私の答えをチェック@Columbus –

答えて

0

次のようなSQL要求することができます:上記の回答と同様に

$selection = array("one", "two", "three"); 
$value = array("Tone", "Ttwo", "Tthree"); 
$concat = array(); 
foreach($selection as $key => $var){ 
    $new = $selection[$key] . " = " . $value[$key]; 
    array_push($concat, $new); 
} 
$concat = implode(" AND ", $concat); 
$request = 'SELECT * FROM fruitgroups WHERE ' . $concat . ';'; 
echo $request; 

Run example

0

が、それをシンプルに保つと値の周りの単一引用符を忘れないでください:

$clauses = []; 
foreach ($values as $i => $value) { 
    $conditions[] = "{$selection[$i]} = '$value'"; 
} 

$query = "SELECT * FROM fruitgroups WHERE " . implode(' AND ', $conditions); 

さらに良いことには、雄弁のようなORMを使用します。

$conditions = [];  
foreach ($values as $i => $value) { 
    $conditions[$i] = $value; 
} 

$result = App\FruitGroups::where($conditions)->get(); 

私はあなたの入力を最初に消毒していると仮定しています。

関連する問題