我通过表单提交价格和category_id,然后查询显示结果。下面是我的资料
$s = mysql_real_escape_string($_GET["s"]);
$c = mysql_real_escape_string($_GET["c"]);
SELECT COUNT(id) FROM products WHERE price <= '$s' AND category_id = '$c'
当用户未选择任何类别且类别值为空时,不显示任何内容。如何解决如果$c
没有任何值而忽略AND category_id = '$c'
的问题?
我想为此创建第二个查询,但是还有其他方法吗?
应该这样做:
$s = mysql_real_escape_string($_GET["s"]);
$c = (int) $_GET["c"];
$qpart = ($c > 0 ? " AND category_id = $c " : '');
$qry = "SELECT COUNT(id) FROM products WHERE price <= '$s' ". $qpart;
像这样:
if(isset($c)){
$cat = " AND category_id = '$c'"
}
$sql = "SELECT COUNT(id) FROM products WHERE price <= '$s'" . $cat;
$addition = '';
if(isset($c) && !empty($c) {
$addition = ' AND category_id = ' . $c;
}
$qry = "SELECT COUNT(id) FROM products WHERE price <= '$s'" . $addition;
如何使用简单的逻辑?如果没有提供参数,它应该短路列检查并选择所有行。
SELECT COUNT(id)
FROM products
WHERE ($s = 0 OR price <= $s) AND
('$c' = '' OR category_id = '$c')