php - 在 mysql REGEXP 查询中转义单引号

标签 php mysql regex

我尝试在 mysql 中使用正则表达式,它运行良好,除非我在单词中使用引号。

例如:

SELECT * FROM table WHERE REGEXP "^pagina's[^[:space:]]*$"

我尝试了以下所有方法:

SELECT * FROM table WHERE REGEXP "^'.preg_quote("pagina's").'[^[:space:]]*$" 

SELECT * FROM table WHERE REGEXP "^'.addslashes("pagina's").'[^[:space:]]*$" 

SELECT * FROM table WHERE REGEXP "^'.mysql_escape_real_string("pagina's").'[^[:space:]]*$" 

运气不好..

由于单词“pagina's”中的单引号 ('),它不会给我任何结果。

如何转义所有引号,以便 mysql 能够看到引号文字并匹配数据库中的字段?

** 编辑 **

这是我的 PHP 代码:

$word = "pagina's";
$ary[] = "LOWER(idx.sidx_word) REGEXP '^".preg_quote($word)."[^[:space:]]*$'";

最佳答案

您需要指定一个表和一个列名...并且您没有正确转义引号。尝试这样的事情:

SELECT *
FROM table
WHERE column REGEXP '^pagina''s[^[:space:]]*$';

关于php - 在 mysql REGEXP 查询中转义单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977333/

相关文章:

PHP 第二次循环遍历数组 (foreach)

mysql - 基于一天中的小时的多个选择子查询计数,想添加表/列

javascript - 使用2种不同格式检测URL正则表达式

regex - 使用来自另一个 EPS 的值更新一个 EPS 中的边界框的脚本

PHP echo 来自不同服务器上的外部 PHP 文件的变量

php - 使用 php/mysql 更新密码

mysql - 生成 MySQL 数据库副本的最快方法

mysql - 在一对多的情况下选择行

Java正则表达式replaceAll不工作

javascript - 我无法将 foreach 选择选项放入 JS 中