首页 > mysql_real_escape_string转义字符串返回false?

mysql_real_escape_string转义字符串返回false?

使用ThinkPHP框架的时候,在配置文件中设置了全局过滤函数,如下:

'DEFAULT_FILTER'=>'mysql_real_escape_string'

在用户登录里,获取用户名和密码并用mysql_real_escape_string函数转义,但是返回的值都为空。网上查到一些文章,说是在使用mysql_real_escape_string需要先连接数据库,相关文章:

1.http://stackoverflow.com/questions/19888928/why-mysql-real-escape-stri...
2.http://.com/q/1010000000151704

如果说使用mysql_real_escape_string函数,需要先连接数据库,那为什么同样得代码,本地能运行,部署在服务器上就不行了?


使用mysql_real_escape_string函数,必须要先连接数据库,在哪都一样。

function MySQLCheck(&$value)
{
    if (get_magic_quotes_gpc())
    {
        $value = stripslashes($value);
    }
    if (!is_numeric($value))
    {
        $value = "'" . mysql_real_escape_string($value) . "'";
    }
    return $value;
    //示例用法:
    //$user = MySQLCheck($_POST['user']);
    //$pwd = MySQLCheck($_POST['pwd']);
    //$sql = "SELECT * FROM users WHERE user = $user AND password = $pwd";
}

上面的写法是(我目前知道的)使用Mysql扩展的最安全的写法。

【热门文章】
【热门文章】