REGEX帮助,SQL语句

时间:2013-05-17 13:14:02

标签: php mysql

我需要Regex进行SQL搜索,例如:

"SELECT * FROM `words` WHERE `searchWord` REGEXP '$queryWord(\d{1,4})';"

除了我需要在'='$queryWord部分之间添加(\d{1,4}),不太确定如何执行此操作?

3 个答案:

答案 0 :(得分:3)

你只需要逃避'='。这应该有效:

"SELECT * FROM `words` WHERE `searchWord` REGEXP '$queryWord\=\d{1,4}'";

另请注意,您的号码周围缺少捕获组。我们正在检查它们,而不是将它们归还。

答案 1 :(得分:3)

我似乎无法让\d表现出来,所以我使用了POSIX [:digit:]。试试这个:

SELECT * FROM `words` WHERE searchWord REGEXP '$queryWord=[[:digit:]]{1,4}'

等号不需要特殊处理。在我的测试中,它可以使用和不使用转发。

你也可以这样做:

SELECT * FROM `words` WHERE searchWord REGEXP '$queryWord=[0-9]{1,4}'

最后,请注意在查询中插入字符串值。这可能使您容易受到SQL注入攻击。有关详细信息,请参阅here和许多其他地方。

答案 2 :(得分:1)

$query="SELECT * FROM `words` WHERE `searchWord` REGEXP '".$queryWord."\=\d{1,4}';"

这样可行。

你需要小心,并确保你的$ queryWord只有字母,没有像点等特殊字符。