我正在尝试基于 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 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)
WHERE
如果变量没有值,则省略该子句。
或者
检查是否设置了 $category
使用 products.category = $category
否则 1
所以结果将是
WHERE products.category = $category
或者
哪里 1