mysql_real_escape_string mysql_escape_string

2020-06-01

mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处,为什么被弃用?

mysql_real_escape_string

mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集

本扩展自 PHP 5.5.0 起已废弃,并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。

本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。

mysql_real_escape_string() 调用mysql库的函数 mysql_real_escape_string, 在以下字符前添加反斜杠: \x00, \n, \r, \, ', "\x1a.

为了安全起见,在像MySQL传送查询前,必须调用这个函数(除了少数例外情况)。

mysql_escape_string

mysql_escape_string — 转义一个字符串用于 mysql_query

mysql_escape_string() 并不转义 % 和 _。  本函数和 mysql_real_escape_string() 完全一样,除了 mysql_real_escape_string() 接受的是一个连接句柄并根据当前字符集转移字符串之外。mysql_escape_string() 并不接受连接参数,也不管当前字符集设定。

被弃用的原因是官方不再建议使用mysql_xx的数据库操作方式,建议使用pdo和mysqli,因为不管从性能跟安全来看,mysqli都比mysql要好。