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

发布于 2024-10-23 14:42:03 字数 253 浏览 0 评论 0原文

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

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

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

The above code works great, but if $cities is empty, nothing is selected. I'd like to select all rows if $cities has no value. How can I achieve that? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不打扰别人 2024-10-30 14:42:03

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

You will need to use a conditional in your php, which removes the where clause when your $cities variable is empty. Alternatively, you can use a regex that matches everything like /^/, but it's not particularly elegant.

晨敛清荷 2024-10-30 14:42:03

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

you should check to see if the $cities is empty. If it is you can replace it with .* (match everything) or remove the from clause from the query (would increase performance)

影子是时光的心 2024-10-30 14:42:03
$results = mysql_query("SELECT * FROM messages". 
(empty($cities)? "":" WHERE content REGEXP '$cities'"));

或者可能

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

Or probably

$results = mysql_query("SELECT * FROM messages WHERE '$cities' = '' OR content REGEXP '$cities'");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文