总所周知,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);
}
}