从db中选择内容时mysql自动striplashes?

时间:2012-06-19 12:49:35

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

我处于一种奇怪的情况,在我的服务器中,当我用mysql_real_escape_string向DB插入字符串然后我打印它,一切都很好,看起来像mysql制作一个自动striplashes!例如我保存tes't然后打印它:tes't但是在安装了php 4.2的本地主机中,我给tes\'t提供了相同的代码。什么是mysql之谜?想知道必须如何插入和选择数据到数据库安全和清洁,永远!因为它让我真的很困惑!

2 个答案:

答案 0 :(得分:1)

这可能取决于PHP的魔术引号设置,更多的是PHP神秘而不是MySQL神秘:)不是使用mysql_real_escape_string(),而是可以使用更通用的功能:

function escape($s)
{
    if (get_magic_quotes_gpc()) $s=stripslashes($s);
    return mysql_real_escape_string($s);
}

使用此代码检查该选项是否处于活动状态并执行第一次剥离。

答案 1 :(得分:1)

你可能会启用魔术引号。你应该把它关掉,而不是试图解决这个问题。如果您无权访问服务器,则仍应以全局方式处理它。例如:

if ( ( function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc() ) || ini_get('magic_quotes_sybase') ) {
    foreach ( $_POST as $k => $v ) { $_POST[$k] = stripslashes($v); }
    foreach ( $_GET as $k => $v ) { $_GET[$k] = stripslashes($v); }
    foreach ( $_COOKIE as $k => $v ) { $_COOKIE[$k] = stripslashes($v); }
}

将它放在代码的开头可以确保在每个场合处理魔术引号,这意味着你不必跟踪你必须处理魔法引号的位置。

此处备注中的更多信息:http://www.php.net/manual/en/function.get-magic-quotes-gpc.php