0

我正在尝试基于 get 变量进行查询。我使用该变量来指定查询应该找到哪些行。当没有设置获取变量时,我希望查询获取所有行。

在代码的前面,我将 $category 变量设置为 1、2、3。

WHERE products.category = $category

问题:如果没有设置变量,我如何让它获取所有行?

4

6 回答 6

1

不要添加 where 子句或只是

WHERE products.category in (1,2,3)
于 2012-07-11T11:17:19.497 回答
1

你能做的最好的事情是:

$wc = (isset($category)) ? "WHERE products.category = '$category'" : "";
$sql = "SELECT *
       FROM products
       " . $wc;
于 2012-07-11T11:22:28.807 回答
0
 WHERE  products.category =(case when $category IS not null 
then $category else products.category end) 
于 2012-07-11T11:25:17.223 回答
0

理想情况下,您将有条件地添加 where 语句(如果仅存在 1、2、3 类别),但如果类别 id 是固定的,您可以尝试使用;

if (!isset($category))
{
    $category = "1,2,3";
}

WHERE products.category in ($category)
于 2012-07-11T11:35:40.620 回答
0

WHERE如果变量没有值,则省略该子句。

于 2012-07-11T11:17:00.767 回答
0

或者

检查是否设置了 $category

使用 products.category = $category

否则 1

所以结果将是

WHERE products.category = $category

或者

哪里 1

于 2012-07-11T11:18:37.407 回答