gpt4 book ai didi

php - MySQL RLIKE 特殊字符转义 PHP

转载 作者:行者123 更新时间:2023-11-29 00:02:25 36 4
gpt4 key购买 nike

我正在尝试使用 RLIKE MySQL 指令进行简单的多词搜索,但是当您插入诸如 ")($*"之类的关键字字符时,我收到 PDO 异常和 MySQL 错误,例如插入 "( “我得到:

SQL error: SQLSTATE[42000]: Syntax error or access violation: 1139 Got error 'parentheses not balanced' from regexp

而且查询非常简单:

SELECT * FROM users WHERE users.name RLIKE :q ORDER BY users.name LIMIT 0, 20;

其中 :q 是搜索关键字的 PDO 参数。 PHP 中是否存在用于这种字符转义的函数或 PDO 方法?或者如果不是另一种方式来做到这一点?

最佳答案

这些字符在正则表达式模式中具有特殊含义,要将它们写为文字字符,您必须使用双反斜杠将它们转义:\\(, \\) , \\$ 或将它们放在字符类中:[)], [(], [$]

请参阅有关正则表达式的教程以了解这些字符及其含义。

如果您想从 php 脚本中转义这些特殊字符,请使用 preg_quote 函数自动为您的参数转义这些字符。有关详细信息,请参阅 PHP 手册。

然而,preg_quote 旨在处理与 MySQL 中使用的不同的 PCRE 语法(PHP 使用的正则表达式引擎)

关于php - MySQL RLIKE 特殊字符转义 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29156915/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com