使用SQLREGEXP(mariadb)过滤Laravel中带有特殊字符的地方

mariadb 版本 10.4

$query->where('column', 'REGEXP', '[[:<:]]'.$string.'[[:>:]]');

此查询仅提供整个单词的搜索,并且在没有特殊字符的情况下工作正常。

例子

搜索行:
foo (bar baz)
筛选:
$string = "(bar";
$query->where('column', 'REGEXP', '[[:<:]]'.$string.'[[:>:]]');
错误:
SQLSTATE[42000]: Syntax error or access violation: 1139 Got error 'missing )

现在我尝试使用addcslashespreg_quote。我成功转义(字符 withpreg_quote但过滤器不适用于该字符串,因为过滤器适用于整个单词。

任何通过整个单词更好地过滤的建议也将不胜感激。

再举一个例子

搜索行:
foo(bar baz
筛选:
$filter = 'foo(bar';
$query->where('column', 'REGEXP', '[[:<:]]'.$string.'[[:>:]]');

如果(将被转义,搜索将不起作用

以上是使用SQLREGEXP(mariadb)过滤Laravel中带有特殊字符的地方的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>