2

这里遇到了一个奇怪的情况。在我的本地 mysql 数据库(v5.1.41)上,如果我要毫无问题地处理用户的引用语法,我需要使用这个转义命令。但是我不能在我的 web 服务器的 mysql 数据库(v5.0.91-community)上使用这个命令。如果在 Web 服务器(apache v2.2.13)上使用此命令,则会在用户的引号语法中添加一个额外的斜杠语法,因此如果我删除 mysql_real_escape_string 命令,带引号的输入将不会有问题插入到数据库中。

所以我想知道,除了php,apache(v2.2.13)或mysql本身是否有一个设置可以自动处理引号语法,如PHP的mysql_real_escape_string命令?

先感谢您

4

3 回答 3

6

这可能是由于魔术行情禁用或删除它们,它们是一个善意但也很烦人的功能。

于 2010-10-27T07:00:34.940 回答
2

magic_quotes_gpc这意味着在服务器上启用了 php 设置。它已被弃用,并且有一种解决方法 - 通过删除代码开头的斜杠:

<?php
if (get_magic_quotes_gpc()) {
    function magicQuotes_awStripslashes(&$value, $key) {$value = stripslashes($value);}
    $gpc = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    array_walk_recursive($gpc, 'magicQuotes_awStripslashes');
}
于 2010-10-27T07:02:42.797 回答
0

我建议您使用filter_input来获取您的用户数据,因为它不关心 magic_quotes 和参数化查询来完成您的数据库工作(请参阅mysqliPDO)。

于 2010-10-27T07:14:24.217 回答