我尝试使用RLIKE MySQL指令进行简单的多字搜索,但是当你插入关键字chars时就像")($ *"我得到一个PDO异常和一个MySQL错误,例如插入"("我得到:
SQL错误:SQLSTATE [42000]:语法错误或访问冲突:1139错误'括号不平衡'来自regexp
,查询非常简单:
SELECT * FROM users WHERE users.name RLIKE :q ORDER BY users.name LIMIT 0, 20;
其中:q
是搜索关键字的PDO参数。在PHP中存在一种函数或PDO方法用于这种char转义?或者,如果不是另一种方式呢?
答案 0 :(得分:1)
这些字符在正则表达式模式中具有特殊含义,要将它们写为必须转义它们的文字字符:\(
,\)
,\$
或将它们放在字符类中: [)]
,[(]
,[$]
请参阅有关正则表达式的教程以了解这些字符及其含义。
如果要从php脚本中转义这些特殊字符,请使用preg_quote
函数自动将这些字符转义为param。有关详细信息,请参阅PHP手册。
但是preg_quote
旨在处理与MySQL中使用的PCRE语法(PHP使用的正则表达式引擎)的不同。