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

标签 php mysql

最近我正在使用 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 />

此时我的数据库完全是空的。我刚刚创建了包含所需列的数据库螺柱。现在的问题是,当我尝试使用我的注册页面进行注册时,它给出了我在 die 中指定的错误,即

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

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

action="register.php" 

作为处理文件。我也尝试过 mysql_fetch_assoc() ,但我得到了同样的错误。任何帮助表示赞赏。谢谢。

最佳答案

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

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

if (mysql_num_rows($error) > 0);

而不是这个:

if (mysql_num_rows($error) > 0)

关于php - php 中的唯一用户 ID 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23032495/

相关文章:

php - 将新字段添加到 Elasticsearch 中的现有索引中

java - java 中的 PHP 相似文本()

mysql - EF Core 2 停止对多对多关系的循环依赖

php - 升级 PHP 分页功能以使其运行速度更快

php - 在不改变页面的情况下调用 PHP 脚本

php - 从 PHP 中导入 Excel 读取日期值

php - 在单独的 DIV 中显示来自 MySQL 的每一行

mysql - 如何在 Ant 中查找可执行文件的路径

mysql - 如何循环遍历两个列表以查看变量是否相同?

mysql - 与上个月相比,如何获得列中的最大差异?