php中唯一的用户id代码不起作用


Unique user id code in php doesnt work

最近我在用php搜索唯一的用户名注册。。我看到了一段代码,我在下面展示:

<?php 
$fname=trim($_POST['fname']);
$lname=trim($_POST['lname']);
$email=trim($_POST['email']);
$usn=trim($_POST['usn']);
$dept=trim($_POST['dept']);
$pass=trim($_POST['pass']);
$tel=trim($_POST['tel']);
$dbh = mysql_connect('localhost', 'root','') or die("<h3 style='"color:red;'" align='"center'">SERVER ERROR</h3>");
mysql_select_db('fy') or die("<h3 style='"color:red;'" align='"center'">SERVER ERROR</h3>");
$error= mysql_query("SELECT * FROM stud WHERE email='$email' OR usn='$usn' OR tel='$tel'") or die (mysql_error()); 
if (mysql_num_rows($error) > 0);
{
    die ("Sorry! Either email, usn or tel already exists!");
}
$query="INSERT INTO stud (fname, lname, email, tel, usn, dept, pass) VALUES ('$fname', '$lname', '$email', '$tel', '$usn', '$dept', '$pass')";
mysql_query($query);
$query="INSERT INTO log VALUES ('$usn','$pass',0,0)";
mysql_query($query);
print("REGISTERED");

 ?>
 <a href="login.php">LOGIN</a><br />

此时此刻,我的数据库完全为空。我刚刚创建了具有所需列的数据库stud。现在的问题是,当我尝试使用我的注册页面注册时,它会给我在die中指定的错误,即

"Sorry! Either email, usn or tel already exists!"

如果数据库中没有值,这怎么可能呢。在我给的注册表中

action="register.php" 

作为处理文件。我也试过使用mysql_fetch_assoc(),但我得到了同样的错误。感谢您的帮助。非常感谢。

您的第一个问题是,正如John Conde所说,您的代码容易受到SQL注入攻击。

你的第二个问题,也就是回答你的问题,可能是因为你有这个:

if (mysql_num_rows($error) > 0);

而不是这个:

if (mysql_num_rows($error) > 0)