在Mysql数据库中测试重复项?

时间:2014-09-30 22:16:35

标签: php mysql

所以我有一个简单的简报注册表格。我可以将用户添加到数据库中,但我想说明重复的电子邮件。这就是我现在所拥有的。

  $result = mysql_query("SELECT * FROM Users WHERE Email='$email'");


  $num_rows = mysql_num_rows($result);


  if($num_rows){
    echo "You've already registered! Thanks anyway";
  }

  else{

  mysqli_query($db_connection, "INSERT INTO Users (Name, Email) VALUES('$name' , '$email')");
  echo "Thanks for signing up, $name.";
  }

当我点击提交时,无论电子邮件是否相同,它都会将其添加到数据库中。

获得$ result的mysql_query很好。但是,由于某种原因,if语句不会被调用。知道为什么吗?

1 个答案:

答案 0 :(得分:4)

  

"获得$ result的mysql_query很好"

您的数据库连接听起来是mysql_ - 您正在使用mysqli_以下的mysqli_功能。

完全使用mysql_query,不要混用它们,他们不会。


旁注: 您的问题令人困惑。

您声明:当我点击提交时,它会将其添加到数据库中,无论电子邮件是否相同。 - 然后您说 $result获取{ {1}}没问题。


这:if($num_rows)应为if($num_rows >0)

将此用于您的数据库连接:

$db_connection = mysqli_connect("your_host","user","password","your_db");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

然后做:

$result = mysqli_query($db_connection, "SELECT * FROM Users WHERE Email='$email'");

$num_rows = mysqli_num_rows($result);

if($num_rows >0){
echo "You've already registered! Thanks anyway";
exit;
}

else{

mysqli_query($db_connection, "INSERT INTO Users (Name, Email) VALUES('$name' , '$email')");
echo "Thanks for signing up, $name.";
}

警告


<强> 脚注:

如果您想避免重复,请将列设置为UNIQUE