我为我的网站制作了一个注册脚本,我想检查db中是否已存在$ _POST ['username']。
有更好的,更少的代码方式吗?我也是这样做的电子邮件。
这就是现在的样子:
$checkusername = mysql_query("SELECT username FROM users WHERE username = '$_POST[username]'");
$row83 = mysql_fetch_assoc($checkusername);
if ($_POST['username'] == $row83['username']) die('Username already in use.');
答案 0 :(得分:4)
在您的桌子上添加unique constraint
:
alter table users
add unique (username)
然后,您的insert
或update
语句将失败:
mysql_query("insert into users (username) values ('$username')")
or die('Username exists');
当然,代码的一个更大问题是您没有阻止SQL注入。你的代码应该是:
$username = mysql_real_escape_string($_POST['username']);
mysql_query("insert into users (username) values ('$username')")
or die('Username exists');
答案 1 :(得分:0)
既然你已经在sql调用中检查了用户名,那么你真的只需要查看是否在php方面返回了一条记录
$row83 = mysql_query($checkusername);
if (mysql_num_rows($row83) == 0) die('Username already in use.');
答案 2 :(得分:0)
如果在数据库中将username设置为“unique”,则可以继续运行insert查询,该查询将失败(您可以处理)。电子邮件也是如此 - 让它“独一无二”。
This可能派上用场。