MySQL使用mysqli_real_escape_string转义单引号

时间:2015-12-18 10:50:28

标签: php mysql mysqli

当我使用mysqli_real_escape_string插入数据库时​​,我发现我的单引号已使用\\而不是\进行转义,这导致我的查询失败。见下文:

注意: $ link是我的数据库连接变种

$string = mysqli_real_escape_string($link, "BEGIN testing quotes - don't use quotes END");
$query = "INSERT INTO table (field) VALUES ('".$string."')";

当我回应我的查询时,我得到:

INSERT INTO table (field) VALUES ('BEGIN testing quotes - don\\'t use quotes END')

导致SQL语法错误。我似乎找不到任何可以改变它的设置。如果我将echo'd查询复制到MySQL工作台并删除\,则查询插入是完美的。

我已经浏览过Stack Overflow并找不到与此相关的任何内容,并且还没有运气通过Google进行搜索。

我有很多查询需要在我的整个网站上进行转义。设置是否可以设置为在插入前自动应用字符串转义而无需更新所有变量?如果没有,无论如何我是否可以改变mysqli_real_escape_string函数而不必手动检查我为单引号插入的每个字符串等?

我很感激您的帮助。

1 个答案:

答案 0 :(得分:-2)

正如Krishna Gupta所说,striplashes解决了我的问题:

$string = mysqli_real_escape_string($link, stripslashes("BEGIN testing quotes - don't use quotes END"));

感谢。