addslashes和mysql_escape_string都是用来进行字符串转义的函数,但是有以下区别:
1. addslashes是PHP内置函数,mysql_escape_string是MySQL的API函数。
2. addslashes主要对字符串中的单引号(‘),双引号(“),反斜杠(\)以及NUL(NULL字符)进行转义。mysql_escape_string主要对SQL语句中的元字符如单引号(‘)进行转义。
3. addslashes转义的字符串可以直接用于SQL语句中的字符串字段,而mysql_escape_string转义的字符串需要拼接到SQL语句中。
4. addslashes转义存在由于PHP字符串引用而导致的安全风险,mysql_escape_string方法安全性更高。举个例子:
$str = "Is this O'Reilly's book?"; $str1 = addslashes($str); echo $str1; // Is this O\'Reilly\'s book? $str2 = mysql_escape_string($str); echo $str2; // Is this O\'Reilly\\\'s book? $sql = "SELECT * FROM books WHERE name = '$str1'"; // Cannot use directly in query $sql = "SELECT * FROM books WHERE name = '$str2'"; // Can be used in query
所以总结来说:- 如果字符串用于PHP脚本的输出,使用addslashes函数转义更简单。
– 如果字符串直接拼接入SQL语句,为了安全和正确性,应使用mysql_escape_string函数转义。
– 在PHP代码中操作数据库时,尽量使用 Prepared Statements 而不是直接拼接字符串到SQL语句中,这可以避免SQL注入。Prepared Statements示例:
$sql = "SELECT * FROM books WHERE name = ?"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "s", $str); mysqli_stmt_execute($stmt);
这是目前比较安全的在PHP操作MySQL的方法。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录