如果在Mysql中IN子句为空,则给出所有行

时间:2014-07-04 10:33:29

标签: php mysql sql

我正在尝试使用国家/地区过滤用户。 $country是一个包含国家/地区名称的数组。我想以这样的方式运行查询:如果国家/地区没有任何内容,则查询会为我提供所有行。我怎么能实现这一点。

我这样做:

  "SELECT * from users where country IN('".implode("','",$country)."')";

提前致谢

2 个答案:

答案 0 :(得分:5)

$sql = "SELECT * FROM users";

if($country) {
    $sql .= " WHERE country IN('" . implode("','", $country) . "')";
}

答案 1 :(得分:0)

对于每个过滤器项,只检查它是否为NULL(即不根据此过滤结果)或者它是否等于/:

SELECT *
FROM users
WHERE ('".implode("','",$country)."' IS NULL OR country IN('".implode("','",$country)."'))
AND ($forename IS NULL OR forename = $forename)