php - 防止重复数据进入mysql数据库

标签 php mysql

我试图让我的电子邮件订阅服务拒绝我的数据库中已经存在的电子邮件,这样用户就不会订阅同一封电子邮件两次。这就是我所拥有的,但它不起作用,有什么想法吗?

<?php 
    if(!isset($_POST['submit'])) 
        exit();

    $vars = array('email');
    $verified = TRUE;
    foreach($vars as $v) {
        if(!isset($_POST[$v]) || empty($_POST[$v])) {
            $verified = FALSE;
        }
    }   
    if(!$verified) {
        echo "<p style='color:white; margin-top:25px;'>*Email required*</p>";
        exit();
    }
    $email = $_POST['email'];
    if($_POST['submit']) echo "<p style='color:white; margin-top:25px;'>*Check your inbox*        </p>";

    // Create connection
    $con=mysqli_connect("mysql.host","user","password","dbname");

    // Check connection
    if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql="INSERT INTO emails (email)    VALUES  ('$_POST[email]')";
    if (!mysqli_query($con,$sql))
    {
        die('Error: ' . mysqli_error($con));
    }

    $query = mysql_query("SELECT * FROM emails WHERE email='$email'",($con));
    if(mysql_num_rows($query) != 1)
    {
        echo "email already exists";
        // redirect back to form and populate with 
        // data that has already been entered by the user
    }


    mysqli_close($con);
?>

最佳答案

让 MySQL 拒绝重复电子邮件地址的最简单方法是使字段唯一 (http://www.w3schools.com/sql/sql_unique.asp)

ALTER TABLE emails ADD UNIQUE (email)

但是,MySQL 不会返回警告

关于php - 防止重复数据进入mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20081424/

相关文章:

php - 新服务器 : Troubleshooting PostgreSQL Syntax Error

mysql - NEWBIE #1064 - 你的 SQL 语法有错误

php - Zend_Validate_EmailAddress 与 filter_var(..., FILTER_VALIDATE_EMAIL)

php - 如何计算/显示 wordpress 中的在线用户数

mysql - 表示MySQL数据库中动态添加的表单字段

php - mysql 和 php - 使用已经转换为 int 的商更新 int 列给我留下分子或零

c# - 在Mysql中使用正确的语法错误

mysql - MySQL 用于联锁操作安全吗?

php - WordPress 使帖子相应地对齐

php - 如何将 mysql 值转换为 echod 形式?