$query=sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('%s')",
mysql_real_escape_string($name));
这是我的注册码,我将检查我的数据库中是否已经存在相同的用户名,并且我将以大写字母转换所有内容,以避免使用不同的大小写相同的名称(Pizza,pizza)。我有两个问题:
1)现在为了防止sql注入我使用mysql_real_escape_string($ name)但是这样可以吗?我可以在该函数中使用变量,还是必须使用$_POST['user']
?
2)究竟是什么sprintf()
?我为什么需要它,为什么会有'%s'
?
答案 0 :(得分:1)
是的,您可以使用变量名称。 sprintf()
用于字符串格式化,%s
在这种情况下是类型说明符:string
答案 1 :(得分:1)
1)如果你使用mysqli_real_escape_string而不是mysql_real_escape_string就没关系。
2)sprintf()具有很多格式化功能,因此您可以做的不仅仅是在字符串中插入变量值。 %s
是sprintf()中格式化字符串的占位符。阅读文档here