字符串转义和sprintf()函数

时间:2013-07-03 22:19:40

标签: php sql

$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'

2 个答案:

答案 0 :(得分:1)

是的,您可以使用变量名称。 sprintf()用于字符串格式化,%s在这种情况下是类型说明符:string

答案 1 :(得分:1)

1)如果你使用mysqli_real_escape_string而不是mysql_real_escape_string就没关系。

2)sprintf()具有很多格式化功能,因此您可以做的不仅仅是在字符串中插入变量值。 %s是sprintf()中格式化字符串的占位符。阅读文档here