Php 正则表达式帮助,SQL语句
我需要正则表达式进行SQL搜索,类似于:Php 正则表达式帮助,SQL语句,php,mysql,Php,Mysql,我需要正则表达式进行SQL搜索,类似于: "SELECT * FROM `words` WHERE `searchWord` REGEXP '$queryWord(\d{1,4})';" 除了,我需要在$queryWord和\d{1,4}部分之间包含“=”,不太确定如何实现这一点?您只需要转义“=”。这应该起作用: "SELECT * FROM `words` WHERE `searchWord` REGEXP '$queryWord\=\d{1,4}'"; 还请注意,您的数字周围缺少捕获组
"SELECT * FROM `words` WHERE `searchWord` REGEXP '$queryWord(\d{1,4})';"
除了,我需要在$queryWord和\d{1,4}部分之间包含“=”,不太确定如何实现这一点?您只需要转义“=”。这应该起作用:
"SELECT * FROM `words` WHERE `searchWord` REGEXP '$queryWord\=\d{1,4}'";
还请注意,您的数字周围缺少捕获组。我们正在检查它们,而不是返回它们。我似乎无法让\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注入攻击。有关更多信息,请参阅和许多其他地方
$query="SELECT * FROM `words` WHERE `searchWord` REGEXP '".$queryWord."\=\d{1,4}';"
这会奏效的
你需要小心,确保你的$queryWord只有字母,没有特殊字符,如圆点等。完全值得投否决票,这不是建设性的,我很清楚这一点,请更清楚地说明你的问题。你想实现什么?在SQL数据库中搜索一个单词+最多4个数字,单词是可变的,数字也是可变的。关于捕获,feilds看起来像这个potato=123+1@mkumpan——我本想自己提出来,但忘了:我确实用mysqli_real_escape_string来转义字符串,如果你想知道这不是我的搜索函数,而是2个函数中的第一个,而是使用这个函数返回一个精确匹配,然后搜索一个%like%优秀,不用担心:SQL注入警告或多或少是一种反射——当通过附加或插入字符串构建MySQL查询时,对StackOverflow发出警告几乎是当今StackOverflow的标准做法。