2013-06-18 59 views
0

WHERE子句的存在是爲了幫助我們篩選的結果,我從用戶得到它告訴我如何篩選的結果,如使用WHERE子句,而不是過濾的事情

WHERE brand="'$brand_that_chosen_by_user'" 

值其中一個選項是Every brand,意思是根本不過濾。 那麼$ brand_that_chosen_by_user需要什麼值,以便WHERE子句不會過濾一件東西並返回所有品牌的結果。

回答

3

您將首先測試在添加where子句之前是否選擇了ALL值。

$sql = " SELECT * FROM tbl"; 
if($brand != 'ALL'){ 
    $sql .= " WHERE brand = '{$brand}'"; 
} 
+0

我想過了,我想知道如果有可能做到這一點,而不會問這個問題。如果沒有,我會接受你的答案。 –

+1

這是做到這一點的最佳方式,可以用奇怪的複雜方法來完成,但這是一種簡單的邏輯方法。 – Jessica

+0

@ShulyCohenPersiado - 爲什麼你不想使用'if'? – andrewsi

0
  1. 您有SQL注入漏洞。 $brand_that_chosen_by_user = union select user,password from users
  2. 當用戶選擇「Every」時,您應該考慮放棄'where'子句。
0

您有兩種選擇。

無論是動態添加WHERE條款需要:

if ($brand != 'Every brand') { 
    $sql .= " WHERE brand = :brand"; 
} 

或者讓你的SQL語句處理這是一個特殊情況:

SELECT * FROM some_table WHERE :brand = 'Every brand' OR brand = :brand 

我使用PDO prepared statements(防止SQL注入) ,所以在這兩種情況下,您都需要將參數綁定到$statement->bindParam("brand", $brand);