2017-06-30 5 views
1

カテゴリIDがデータベース内の 'カテゴリ'または 'category_2'列と一致するすべての製品を表示し、ブランドと一致する簡単なクエリを作成したいと考えています。同じクエリ内でORとANDを使用して問合せする問題

ORとANDを同じクエリ内で使用する必要があります。

これが正常に動作します私の現在のクエリです:

$all="SELECT * FROM models WHERE category = " . $category['id'] . " OR category_2 = " . $category['id'] . " AND brand = ". $brand_name['id'] ." ORDER BY year DESC, month DESC"; 

しかし、私は、ブランドのセクションが機能しない作られた新しいクエリを:私が達成しようとしてる何

$all="SELECT * FROM models WHERE category = " . $category['id'] . " AND brand = ". $brand_name['id'] ." ORDER BY year DESC, month DESC"; 

この。

+2

あなたのコードはSQLインジェクションの影響を受けやすいです。 [prepared statements](https://www.youtube.com/watch?v=nLinqtCfhKY)を使用する方法を学んでください。 –

+1

'WHERE categoryID IN(category、category_2)... ' – jarlh

+0

@tereškoはユーザー入力ではなく以前の選択の結果でない場合は表示されません。 – vaso123

答えて

1

あなたはグループあなたのロジックに必要があります:あなたがする必要があるのは、OR条件の周りの場所のブラケットである

$all="SELECT * FROM models 
WHERE (category = " . $category['id'] . " OR category_2 = " . $category['id'] . ") 
AND brand = ". $brand_name['id'] ." ORDER BY year DESC, month DESC"; 
1

()

$all="SELECT * 
FROM models 
WHERE (category = " . $category['id'] . " OR category_2 = " . $category['id'] . ") 
AND brand = ". $brand_name['id'] ." 
ORDER BY year DESC, month DESC"; 
1

を追加してみてください。

$all="SELECT * FROM models WHERE (category = " . $category['id'] . " OR category_2 = " . $category['id'] . ") AND brand = ". $brand_name['id'] ." ORDER BY year DESC, month DESC"; 
1

ちょうど第二の条件でANDそのように、彼らが模索されており、単一の条件として扱うことができbracketsの内側にあなたのor条件を入れて

$all="SELECT * FROM models 
WHERE (category = " . $category['id'] . " OR category_2 = " . $category['id'] . ") 
AND brand = ". $brand_name['id'] ." ORDER BY year DESC, month DESC"; 
4

これはmysqliのを使用する必要があり、SQLインジェクションになりやすいです。この方法を試してください:

$query = "SELECT column1,column2,column 3 FROM models WHERE (category = ? OR categeory_2 = ?) AND brand_name = ? ORDER BY year DESC, month DESC"; 
$stmt = $conn->prepare($query); 
$stmt->bind_param("sss",$category['id'],$category['id'],$band_name['id']); 
$stmt->execute(); 
$stmt->bind_result($col1,$col2,$col1); 
$stmt->fetch(); 
関連する問題