当前位置:  开发笔记 > 编程语言 > 正文

mysql_real_escape_string和addslashes有什么区别?

如何解决《mysql_real_escape_string和addslashes有什么区别?》经验,为你挑选了2个好方法。

mysql_real_escape_string并且addslashes都用于在数据库查询之前转义数据,那有什么区别?(这个问题不是关于参数化查询/ PDO/mysqli)



1> Mark Embling..:

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
mysql_real_escape_string() 调用MySQL的库函数mysql_real_escape_string,它将反斜杠添加到以下字符:\ x00,\n,\ r,\,',"和\ x1a.

string addslashes ( string $str )
在需要在数据库查询等中引用的字符之前返回带有反斜杠的字符串.这些字符是单引号('),双引号("),反斜杠(\)和NUL(NULL字节).

它们影响不同的角色.mysql_real_escape_string特定于MySQL.Addslashes只是一个通用函数,可能适用于其他东西以及MySQL.



2> Jon Cram..:

mysql_real_escape_string()通过可选的link_identifier参数,相对于数据库的字符集,可以正确地转义文本输入.

字符集意识是一个重要的区别.addslashes()将在每个要转义的字符的八位二进制表示之前添加斜杠.

如果你使用某种形式的多字节字符集,虽然可能只是通过字符集设计不佳,但是16或32位字符表示的一半或两半与字符的8位相同是addslashes()可能的.添加斜杠.

在这种情况下,您可能会在不应该转义的字符之前添加斜杠,或者更糟糕的是,您可能会在十六(或三十二)位字符的中间获得一个斜线,这会破坏数据.

如果您需要在数据库查询中转义内容,则应始终使用mysql_real_escape_string().addslashes()如果您确定数据库或表仅使用7位或8位ASCII编码,则可以.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有