首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PDO/mysqli查询返回的行与使用regex的mysql cli不同

PDO/mysqli查询返回的行与使用regex的mysql cli不同
EN

Stack Overflow用户
提问于 2018-06-09 04:51:24
回答 1查看 32关注 0票数 1

我遇到了一些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

我怀疑与反斜杠转义有关,但不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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+

-字符串结束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档