0

WHERE 子句的存在是为了帮助我们过滤结果,我从用户那里得到一个值,它告诉我如何过滤结果,例如

WHERE brand="'$brand_that_chosen_by_user'"

选项之一是每个品牌,这意味着根本不过滤。那么 $brand_that_chosen_by_user 需要什么值,以便 WHERE 子句不会过滤事物并返回所有品牌结果。

4

3 回答 3

3

在添加 where 子句之前,您将首先测试他们是否选择了 ALL 值。

$sql = " SELECT * FROM tbl";
if($brand != 'ALL'){
    $sql .= " WHERE brand = '{$brand}'";
}
于 2013-06-18T17:06:05.360 回答
0
  1. 您有一个 sql 注入漏洞。 $brand_that_chosen_by_user = union select user,password from users
  2. 当用户选择“Every”时,您应该考虑只删除“where”子句。
于 2013-06-18T17:07:22.903 回答
0

你有两个选择。

根据需要动态添加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);.

于 2013-06-18T17:08:12.063 回答