Php 检查用户名是否存在

Php 检查用户名是否存在,php,mysql,Php,Mysql,我正在为我的网站制作一个注册脚本,我想检查数据库中是否已经存在$u POST['username'] 有没有更好、更少代码的方法?我对电子邮件也这么做 现在的情况是这样的: $checkusername = mysql_query("SELECT username FROM users WHERE username = '$_POST[username]'"); $row83 = mysql_fetch_assoc($checkusername); if ($_POST['username']

我正在为我的网站制作一个注册脚本,我想检查数据库中是否已经存在$u 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.');

因为您已经在sql调用中检查了用户名,所以您只需要查看是否在php端返回了一条记录

$row83 = mysql_query($checkusername);
if (mysql_num_rows($row83) == 0) die('Username already in use.');
如果在数据库中将username设置为“unique”,则可以继续运行insert查询,该查询将失败(您可以处理)。电子邮件也是如此——让它“独一无二”

可能会派上用场。

在您的桌子上添加一个:

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');

我希望您没有名为“”的用户;删除表用户--leeeroy提出了一个非常重要的问题。。。检查UI中的所有输入,不要信任它。如果不这样做,有人可以将SQL注入SELECT语句中,这将破坏数据库。关于这一点的幽默角度,请看@Eric J,《功劳应得:如果你不知道的话,漫画是Randall Munroe创作的XKCD》。