-1
$query=sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('%s')",
         mysql_real_escape_string($name));

这是我的注册码,我将检查我的数据库中是否已经存在相同的用户名,并将所有内容都转换为大写以避免相同的名称具有不同的大小写(比萨、比萨)。我有两个问题:

1) 现在为了防止 sql 注入,我使用 mysql_real_escape_string($name) 但这可以吗?我可以在该函数中使用变量还是必须使用$_POST['user']

2)究竟是sprintf()什么?为什么我需要它,为什么'%s'在里面?

4

2 回答 2

1

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

于 2013-07-03T22:25:41.820 回答
1

1)如果你使用mysqli_real_escape_string而不是mysql_real_escape_string也可以。

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

于 2013-07-03T22:26:28.113 回答