SELECT row WHERE parameter


SELECT row WHERE parameter

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

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

WHERE products.category = $category

问题是:如果没有设置变量,我如何使它获得所有行?

不要添加where子句或只添加

WHERE products.category in (1,2,3)

你能做的最好的事情是:

$wc = (isset($category)) ? "WHERE products.category = '$category'" : "";
$sql = "SELECT *
       FROM products
       " . $wc;
如果变量没有值,则省略WHERE子句。

检查是否设置了$category,然后

使用products.category=$category

其他1

所以结果要么是

WHERE products.category=$category

其中1

 WHERE  products.category =(case when $category IS not null 
then $category else products.category end) 

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

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