PHP MYSQL 防止用户或电子邮件插入两次

标签 php mysql insert duplicates

我想防止用户两次输入同一电子邮件,这将创建重复的条目。请帮我解决这个小问题,我已经在stackoverflow上搜索了这个问题,但每个人都有自己的数据库和自己的方法。

谢谢

 <form action="create_subscriber.php" method="post">
      <input placeholder="Name" name="inputName" type="name" required/>   
      <input name="inputEmail" placeholder="example@email.com" name="Submit" type="email" required/>
      <input name="Submit" type="submit" value="Subscribe"/>
 </form>

下面的create_subscriber.php

<?php
//include 'connection.php'

$dbhost = "localhost";
$dbuser = "sampleuser";
$dbpass = "samplepass";
$dbname = "sampledb";

$conn = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

    $name = $_POST['inputName'];
    $email = $_POST['inputEmail'];

if(!$_POST['Submit']){
       echo "Please enter a name & email";
        //header('Location: index.php');

}else{
    mysql_query("INSERT INTO subscriptions 
(`ID`,`Name`, `Email`) VALUES(NULL,'$name', '$email' ) ") 
or die(mysql_error());  

    echo "User has been added";
    header('Location: success.php');
}

?>

最佳答案

由于您没有进行任何验证,因此您可以使用电子邮件作为唯一字段并执行 REPLACE 查询。 http://dev.mysql.com/doc/refman/5.0/en/replace.html

我强烈建议您在尝试进行辅助插入之前以对数据库进行查询检查的形式编写验证。甚至通过可用的持久连接变得很容易,这样您就不需要执行验证查询所需的几个滴答的开销。

关于PHP MYSQL 防止用户或电子邮件插入两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28899160/

相关文章:

php - 如何在 PHP 中比较这些数据库值?

php - 如何从mysql查询中排除表?

oracle - 选择并跨dblink插入

php - jquery ajax 返回空值

php - 如何合并两个 php Doctrine 2 ArrayCollection()

php - 将 CSS 应用于所有页面,包括 http ://url?/id=x

mysql - 不要在 MySQL 的表上重复 (DISTINCT) 一列

php - 如何在 MySQL 中重复插入行时抛出错误

mysql - 使用表单将一个mysql表中的数据插入到另一个mysql表中

javascript - 使用 jQuery、Ajax 和 PHP 搜索 MySQL 表不起作用