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://segmentfault.com/q/1010000000151704

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

阅读 6.5k
1 个回答

使用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扩展的最安全的写法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进