在PHP中,在数据库查询中使用字符串之前通常使用两个函数来转义它们:mysql_real_escape_string和addslashes。虽然两者的用途相似,但需要考虑一些细微的差异。
addslashes
此函数在特定字符之前添加反斜杠:'(单引号)、"(双引号) )、(反斜杠)和 NUL(NULL 字节)它可以防止这些字符被解释为 SQL 注入攻击的一部分。
mysql_real_escape_string
此函数在 PHP 7.3.0 中已弃用,是专门为 MySQL 设计的,它向 MySQL 需要转义的字符添加反斜杠,包括x00、n、r、x1a、'(单引号)和 "(双引号)。但需要注意的是,MySQL 中转义的实际实现可能会涉及额外的字符。
mysql_real_escape_string 中未转义字符的意义
两者之间的关键区别功能在于没有用addslashes转义的字符。其中包括:
建议
通常建议使用数据提供者的转义函数,例如mysql_real_escape_string,而不是addslashes。这可确保为所使用的特定数据库正确准备字符串。虽然 mysql_real_escape_string 已被弃用,但较新版本的 PHP 可能会具有类似的替换函数,用于在 MySQL 查询中转义字符串。
以上是为什么在 MySQL 查询中使用 mysql_real_escape_string 而不是 addslashes?的详细内容。更多信息请关注PHP中文网其他相关文章!