Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式帮助,SQL语句_Php_Mysql - Fatal编程技术网

Php 正则表达式帮助,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}'"; 还请注意,您的数字周围缺少捕获组

我需要正则表达式进行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}'";
还请注意,您的数字周围缺少捕获组。我们正在检查它们,而不是返回它们。

我似乎无法让\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的标准做法。