我在PHP中将SQL查询放在一起。如何在标点符号中声明一个点?
请求的示例代码:
$sql="SELECT COUNT(*) FROM Table1 WHERE LOWER(location2) REGEXP '.* .$location .*'";
请参阅.*
是一个正则表达式,不应将PHP解释为连接。
答案 0 :(得分:0)
这与PHP语法无关。您的示例在带引号的字符串中包含.
,PHP在引用的字符串中将其解释为.
。因此没有错。
您可能遇到的是MySQL将.
视为正则表达式中的外卡运算符。在正则表达式语法中(无论是在MySQL,PHP,Perl,无论在哪里).
是一个匹配任何单个字符的通配符。如果您想在正则表达式中包含文字.
,则需要将其转义,即\.
。
因为您在字符串内的字符串中使用它,所以您还需要转义\
字符,以便正确地通过正则表达式。如果没有测试,我会说它需要两次转义(一次用于PHP,一次用于MySQL),例如PHP中的"'\\\\.'"
在MySQL中变为'\\.'
,在正则表达式中变为\.
。
(显然,只能逃避要按字面意思对待的.
个字符 - 我会假设.*
是为了匹配任何字符 - 这些不应该更改。)