WHERE子句的存在是为了帮助我们过滤结果,我从用户那里得到一个告诉我如何过滤结果的值,如
WHERE brand="'$brand_that_chosen_by_user'"
其中一个选项是每个品牌,这意味着根本不进行过滤。 那么$ brand_that_chosen_by_user需要的价值是什么,所以WHERE子句不会过滤东西并返回所有品牌的结果。
答案 0 :(得分:3)
在添加where子句之前,您首先要测试他们是否选择了ALL值。
$sql = " SELECT * FROM tbl";
if($brand != 'ALL'){
$sql .= " WHERE brand = '{$brand}'";
}
答案 1 :(得分:0)
$brand_that_chosen_by_user = union select user,password from
users
答案 2 :(得分: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);
绑定。