如何使用正则表达式返回带有MySQL查询的记录?

时间:2009-05-05 05:22:39

标签: php mysql regex

我的数据库中有用户输入搜索的记录,最初,这足以找到正确的记录。

"SELECT id FROM plants WHERE Flower LIKE '%" . $sanitizedUserInput . "%'"

这一切都运作得很好,但事情开始发生了,搜索“红色”在他们的Flower字段中按顺序获得字符“红色”的植物,而不仅仅是整个单词'红”。

我被建议简单地在用户输入的任一侧放置一个空格,但我知道如果该字是该字段中的第一个字或最后一个字,则会失败。我心想,我应该用正则表达式!要搜索任何一侧有单词边界的单词。

不幸的是,我之前从未在数据库中使用过正则表达式。如何构建查询以使用正则表达式搜索数据库?希望它就像这样简单:

"SELECT id FROM plants WHERE Flower REGEX `/\b" . $sanitizedUserInput . " \b/`"

1 个答案:

答案 0 :(得分:7)

是的,这很容易。

MySQL Reference Manual - Regular Expressions

MySQL正则表达式中的单词边界序列是[[:<:]][[:>:]],所以你最终会得到类似的结果:

$query = "SELECT id ".
            "FROM plants ".
            "WHERE Flower REGEXP '[[:<:]]".$sanitizedUserInput."[[:>:]]'";