我在使用php-pdo时遇到了一些问题,mysqli也遇到了这些问题
我有一个mysql查询,在mysql cli中返回221行,但是如果我在php中运行相同的查询,pdo query只返回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)551 9771,但在pdo返回电话,如64 06 358 7361
我怀疑与反斜杠越狱有关,但不确定。
1条答案
按热度按时间3qpi33ja1#
您需要将反斜杠加倍,因为mysql需要两个反斜杠来匹配文本反斜杠。另外,你需要补充
+
最后一个量词[0-9]
数字匹配模式,并用字符串锚结束模式,$
.使用
细节
^
-字符串开头\\\\(
-翻译成\\(
对于mysql命令-翻译成\(
字符串-a(
烧焦[0-9]+
-1+位数\\\\)
-a)
烧焦*
-0+空格(使用+
匹配1个或多个)[0-9]+ +[0-9]+
-1+位,1+空格,1+位$
-字符串结尾。