我根据变量使用MySQL
子句进行WHERE
查询。我想弄清楚是否有办法将变量设置为一个通配符,它会在该字段中返回任何值?
WHERE c.call_state_id = $state
AND (follow_emp_id = $user_id OR follow_emp_id = 117)
ORDER BY $sort
我希望实际上消除查询的$user_id
部分,而不是将结果限制为1个特定AND
。
答案 0 :(得分:1)
我会动态构建查询,并在将其放入WHERE
子句之前检查该值。
if (empty($userid)) {
$userid_check = ""
} else {
$userid_check = "AND (follow_emp_id = $user_id OR follow_emp_id = 117)"
}
$sql = "SELECT ...
WHERE c.call_state_id = $state
$userid_check
ORDER BY $sort";
有关动态构建查询的更一般方法,请参阅https://stackoverflow.com/a/28909923/1491895。
答案 1 :(得分:0)
如果您知道不使用的值,例如0(或-1);你可以检查一下:
WHERE c.call_state_id = $state
AND ($user_id = 0 OR follow_emp_id = $user_id OR follow_emp_id = 117)
ORDER BY $sort