MySQL查询:如果REGEXP $ var为空,请选择全部?

时间:2011-03-17 15:16:47

标签: php mysql regex select

$cities = "Amsterdam|Rotterdam|Den Haag"
$results = mysql_query("SELECT * FROM messages WHERE content REGEXP '$cities'");

以上代码效果很好,但如果$cities为空,则不会选择任何内容。如果$cities没有值,我想选择所有行。我怎样才能做到这一点?谢谢!

3 个答案:

答案 0 :(得分:0)

您需要在php中使用条件,当$cities变量为空时,会删除where子句。或者,您可以使用匹配/^/之类的所有内容的正则表达式,但它并不是特别优雅。

答案 1 :(得分:0)

你应该检查$ cities是否为空。如果是,你可以用。*(匹配所有内容)替换它或从查询中删除from子句(会提高性能)

答案 2 :(得分:0)

$results = mysql_query("SELECT * FROM messages". 
(empty($cities)? "":" WHERE content REGEXP '$cities'"));

或者可能

$results = mysql_query("SELECT * FROM messages WHERE '$cities' = '' OR content REGEXP '$cities'");