【发布时间】:2018-06-08 20:51:24
【问题描述】:
我在使用 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) 551 9771 这样的电话号码 但在 pdo 中返回电话,例如 64 06 358 7361
我怀疑与反斜杠转义有关,但不确定。
【问题讨论】:
-
试试
'^\\\\([0-9]+\\\\) *[0-9]+ +[0-9]+$'。 -
成功了!谢谢
-
PHP 在计算字符串时会吞下反引号。如果我们取消分配和执行,就可以很容易地看出这一点,这给了我们一个指向 echo/var_dump/display 检查字符串的内容...
$sql = "..."; var_dump($sql); $pdo->query($sql);