$cities = "Amsterdam|Rotterdam|Den Haag"
$results = mysql_query("SELECT * FROM messages WHERE content REGEXP '$cities'");
以上代码效果很好,但如果$cities
为空,则不会选择任何内容。如果$cities
没有值,我想选择所有行。我怎样才能做到这一点?谢谢!
答案 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'");