簡體   English   中英

使用WHERE子句而不過濾內容

[英]Using the WHERE clause and not filtering a thing

存在WHERE子句可以幫助我們過濾結果,我從用戶那里得到了一個值,該值告訴我如何過濾結果,例如

WHERE brand="'$brand_that_chosen_by_user'"

選項之一是每個品牌,這意味着根本不要過濾。 因此,$ brand_that_chosen_by_user需要具有什么值,以便WHERE子句不會過濾任何內容並返回All brand結果。

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

$sql = " SELECT * FROM tbl";
if($brand != 'ALL'){
    $sql .= " WHERE brand = '{$brand}'";
}
  1. 您有一個sql注入漏洞。 $brand_that_chosen_by_user = union select user,password from users
  2. 當用戶選擇“每個”時,您應該考慮僅刪除“ where”子句。

您有兩個選擇。

根據需要動態添加WHERE子句:

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

或讓您的SQL語句將其作為特殊情況處理:

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

我使用的是PDO准備好的語句 (以防止SQL注入),因此在兩種情況下,您都需要將參數與$statement->bindParam("brand", $brand);綁定$statement->bindParam("brand", $brand);

暫無
暫無

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

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