Mysql_real_escape_string ...还有自动设置吗?

时间:2010-10-27 06:58:09

标签: php mysql apache mysql-real-escape-string

这里有一个奇怪的情况。在我的本地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命令?

提前谢谢

3 个答案:

答案 0 :(得分:6)

这可能是由于Magic QuotesDisable or remove them,它们是一个很好的但也很烦人的功能。

答案 1 :(得分:2)

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

<?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');
}

答案 2 :(得分:0)

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