我的查询如下:
SELECT *
FROM produit
WHERE year(date_commande) = '.$date.'
ORDER BY num_serie_produit desc;
$date = 2014
。
但是这个变量可以具有all的值,所以这意味着我需要选择所有产品。
我知道我可以通过这样做第二个查询来解决我的问题:
SELECT *
FROM produit
ORDER BY num_serie_produit desc;
但我想知道我是否只能使用一个查询并使用$ date。
我试过这样的事情:
if ($date == "all"){
$date = '%%';
}
但它没有改变任何东西:/
有可能吗?
答案 0 :(得分:1)
但是这个变量可以具有all的值,
如果$date == "all"
,则运行不同的查询,不带WHERE
子句。
$sql = "SELECT *
FROM produit
". ($date == "all" ? "WHERE year(date_commande) = ".$date : "") ."
ORDER BY num_serie_produit desc;";
我的问题是"是否可以只使用一个查询并使用$ date变量?"
有点儿。只是以不同的方式构造查询(仅当WHERE
的值为" all"时才包含$date
子句。这可能是解决问题的更好方法,而不是使用SQL IF()
语句或其他方式,imho,因为你不需要将更多的函数传递给MySQL,虽然这是一个很小的开销#34;我认为它应该要避免。
答案 1 :(得分:0)
例如:
WHERE "'.$date.'" IN (year(date_commande), "all")