我遇到了一些PHP PDO的问题,这些问题也发生在mysqli上
我有一个mysql查询,它在mysql cli中返回221行,但如果我在php中用pdo运行同样的查询,查询只返回25行,并且是不正确的行。
$stmt = $pdo->query("SELECT id, company_phone, locale, headquarters FROM xmltest.company where company_phone regexp '^\\([0-9]+\\)\\ [0-9]+\\ [0-9]' = 1 and char_length(company_phone) = 14");
/* SELECT id, company_phone, locale, headquarters FROM xmltest.company where
company_phone regexp '^\\([0-9]+\\)\\ [0-9]+\\ [0-9]' = 1 and
char_length(company_phone) = 14 */
正则表达式匹配电话,如(021) 5519771,但在pdo中返回电话,如64 06 358 7361
我怀疑与反斜杠转义有关,但不确定。
发布于 2018-06-09 05:10:47
您需要将反斜杠加倍,因为MySQL需要两个反斜杠才能匹配文字反斜杠。此外,您需要在最后一个[0-9]
数字匹配模式中添加+
量词,并以字符串锚$
结尾结束该模式。
使用
'^\\\\([0-9]+\\\\) *[0-9]+ +[0-9]+$'
详细信息
^
- string\\\\(
的开始-为char[0-9]+
命令转换为digits$
-转换为\\(
字符串-a char*
- \(
digits$
-a 1+ )
- 0+空格(使用+
匹配一个或多个) 1+ - 1+空格,1+ -字符串结束。
https://stackoverflow.com/questions/50768226
复制相似问题