这里有一个奇怪的情况。在我的本地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命令?
提前谢谢
答案 0 :(得分:6)
这可能是由于Magic Quotes。 Disable 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,参数化查询来完成数据库工作(请参阅mysqli或PDO)