首页 > 数据库技术 > 详细

mysql_real_escape_string总是返回false

时间:2016-02-06 01:40:06      阅读:299      评论:0      收藏:0      [点我收藏+]

总所周知,mysql_real_escape_string函数的作用是:转义SQL语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集。并且mysql_real_escape_string()并不转义%和_。
但是,如果按照手册的例子来写代码,总是返回一个False。这是因为mysql_real_escape_string()需要连接上数据库。

所以,如果想要使用mysql_real_escape_string()函数过来敏感数据,可以参考一下例子。

$db = mysql_connect(‘localhost‘,‘root‘,‘root‘) or die("Database error");
mysql_select_db(‘test‘, $db);

$result = mysql_query(“set names ‘utf8′”);

//获取用户数据
$name = $_GET[‘name‘];

//使用mysql_real_escape_string过滤数据
$name = mysql_real_escape_string($name,$db);

$query = “select * from user where name=’{$name}’”;

$result = mysql_query($query);
$data = mysql_fetch_assoc($result);
var_dump($data);

如果你当前方法没有连接上数据,可以使用mysql_escape_string()函数。mysql_escape_string和 mysql_real_escape_string() 完全一样。

比如,我们在Thinkphp,就可以自定义一个这样的方法。

/**
* [dataFilter 过滤用户敏感数据]
* @param string $str 需要过滤的变量
* @return string 过滤后的数据
*/
public function dataFilter($str=‘‘) {

$cleaned = strip_tags($str);
// var_dump($cleaned);

$cleaned = htmlspecialchars( $cleaned );

if($this->_linkID){
return mysql_real_escape_string($str,$this->_linkID);
}else{
return mysql_escape_string($str);
}

}

mysql_real_escape_string总是返回false

原文:http://www.cnblogs.com/liangzhi18/p/5183692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!