php - 在 PHP 中,如何在插入 MySQL 表之前转义字符串中的单引号?

标签 php mysql regex replace

我有很多文本需要使用 PHP 插入到 MySQL 表中。部分文本如下例所示:

Yes, this is 'great'!

要将其填充到 SQL 语句中,我需要转义 '

我正在使用 ereg-replace $text=mb_ereg_replace("'","\\'", $text); 来完成以下工作:

$sql="insert into mytable (msg) values ('".$text."')";

现在我发现还有另一种文本样式,我必须将如下内容保存到 MySQL:

As you can see the \' world\' is a "disc"!

所以我尝试添加更多 mb_ereg_replace,如下所示:

$text=mb_ereg_replace("'","\\'", $text);
$text=mb_ereg_replace("\\","\\\\", $text);

但这不起作用,我只是收到错误消息:PHP警告:mb_ereg_replace():mbregex编译错误:在[...]中转义时结束模式

这是什么原因造成的?我可能犯了一些错误,但找不到它!

感谢您提供的任何帮助。

最佳答案

使用mysql_real_escape_string逃避你的字符串。

$text = mysql_real_escape_string($text);

或者更好的是,使用 PDO 和参数化查询。

关于php - 在 PHP 中,如何在插入 MySQL 表之前转义字符串中的单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766773/

相关文章:

php - 搜索关键字可能包含特殊字符的搜索查询是什么?

php - 多个数据库字段的搜索表单

c - 如何使用正则表达式匹配包含空格、空字符和换行符的日期时间字符串?

java - 从电话号码字符串条目中删除所有特殊字符,除了仅出现在第一位的 +

java - 如何在 Java 中使用正则表达式匹配给定字符串的开头或结尾

javascript - Ajax 不返回数据

PHP 类 - 全局或 __construct

php - 使用模数除以零误差

php - 使用 PHP/phpmyadmin 将整数插入 SQL

mysql - MySQL数据库字段出现奇怪字符