哪个转义函数更适合 MySQL:`mysql_real_escape_string` 或 `addslashes`?

Susan Sarandon
发布: 2024-11-12 15:50:02
原创
973 人浏览过

Which escaping function is better for MySQL: `mysql_real_escape_string` or `addslashes`?

MySQL 转义函数:mysql_real_escape_string 与addslashes

PHP 函数mysql_real_escape_string() 和addslashes() 均用于转义可能有问题的字符用于插入 MySQL 数据库的字符串。但是,这两个函数之间存在细微差别,可能会影响它们对不同用例的适用性。

addslashes()

addslashes() 替换一组预定义的字符带有反斜杠以防止它们被数据库解释为特殊字符。 addslashes() 转义的默认字符集包括单引号 (')、双引号 (")、反斜杠 () 和 NULL 字节。

mysql_real_escape_string()

mysql_real_escape_string() 包装了对 MySQL 内部 mysql_real_escape_string() 函数的调用,该函数具体来说,mysql_real_escape_string() 转义以下字符:

  • x00(空字节)
  • n(换行)
  • r(回车)
  • , (逗号)
  • '(单引号)
  • "(双引号)
  • x1a(EOF(文件结尾))

主要区别

之间的主要区别mysql_real_escape_string()和addslashes()在于它们对上面提到的转义字符的处理。 mysql_real_escape_string() 会转义一些addslashes() 不会转义的字符,例如NULL 字节、换行符和回车符。

此外,mysql_real_escape_string() 根据MySQL 定义的规则执行转义操作,即可能与addslashes()应用的转义规则不同。例如,在 MySQL 的最新版本中,字符串转义可能涉及双引号字符,而不是在它们前面加上反斜杠。 mysql_real_escape_string() 会自动处理这些更改,而addslashes() 则不会。

何时使用哪个函数

一般来说,mysql_real_escape_string() 优于addslashes()用于转义 MySQL 数据库的字符串。这是因为 mysql_real_escape_string() 使用 MySQL 特定的转义规则,确保字符串已正确准备好插入 MySQL 查询。

另一方面,addslashes() 适合需要转义字符串的情况用于其他目的,例如一般文本操作或准备显示字符串。但是,在使用它来转义用于 MySQL 数据库的字符串时,必须了解addslashes() 的限制并彻底测试您的代码。

以上是哪个转义函数更适合 MySQL:`mysql_real_escape_string` 或 `addslashes`?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板