检查电子邮件是否是唯一的php

时间:2016-02-01 12:57:20

标签: php mysql email

我正在创建一个关于音乐的网站,在我的网站底部,我有一个只提交电子邮件的表单。我这样做是为了收集用户的电子邮件。

此外,我创建了一个数据库,在该数据库中,我创建了一个名为电子邮件的表,只有两列:idemail

我想让我收到的电子邮件与众不同,因为现在我正在测试它,我可以发送许多同名电子邮件。我已经尝试了一些编码以实现此目的但没有运气所以我将仅发布我目前的代码,因此您可以帮助我在代码中添加我需要的内容以便接收唯一的电子邮件地址。< / p>

P.S我会在项目结束时将我的数据库从mysql更新到mysqli。

这是我目前的代码:

<?php 
error_reporting(E_ERROR | E_PARSE);
include('../database/db.php');
$email = $_POST['email'];

if($email != "") {
$sql = mysql_query ("INSERT INTO emails (email) VALUES ('$email')");
echo "Thank you for Submitting. Redirecting back to Home Page";
}
?>

4 个答案:

答案 0 :(得分:3)

  • 首先..因为@RamRaider已经评论过您必须为email列添加唯一索引
  • 第二..您必须停止使用mysql_*函数,因为它们已被弃用。您可以使用mysqli_*个函数,MySQLi类或PDO。此外,通过使用预准备语句,您可以避免使用SQL Injections
  • 即使您设置了唯一索引,也应该在插入之前进行验证:

    <?php
    
    // PDO instantiation here
    
    $stmt = $pdo->prepare('SELECT COUNT(email) AS EmailCount FROM emails WHERE email = :email');
    $stmt->execute(array('email' => $_POST['email']));
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($result['EmailCount'] == 0) {
        $stmt = $pdo->prepare('INSERT INTO emails (email) VALUES (:email)');
        $stmt->execute(array('email' => $_POST['email']));
        echo 'Thank you for Submitting. Redirecting back to Home Page';
    } else {
        echo 'E-mail exists!';
    }
    

答案 1 :(得分:0)

注意:这不会涉及到如何清理PHP。 (Helpful tips)

正如@RamRaider建议的那样,将电子邮件列更新为unuiqe。

然后将mysql_query()的结果设置为变量,可以检查该变量是否存在有效执行。

$result = mysql_query("INSERT INTO emails (email) VALUES ('$email')");
 if (mysql_num_rows($result)) {
    // Something good happened and email was unuiqu
 }
else{
    // well we have encountered a problem and need to fix that or inform he user
}

如您所见,它会检查您尝试执行的结果,以确定是否添加了成功的项目。

答案 2 :(得分:0)

您可以在插入之前查看电子邮件,如下所示

if($email != "") {
$sql = mysql_query ("select * from `emails` where email='".$email."'");
$fetch = mysql_num_rows($sql);
if($fetch>0)
{
echo "email already inserted";
}
else
{
$sql = mysql_query ("INSERT INTO emails (email) VALUES ('$email')");
echo "Thank you for Submitting. Redirecting back to Home Page";
}}

答案 3 :(得分:0)

error_reporting(E_ERROR | E_PARSE);
include('../database/db.php');
$email = $_POST['email'];
if($email != "") {
    $result = mysql_query("SELECT * FROM emails where email='".$email."'");
    $num_rows = mysql_num_rows($result);
    if($num_rows >= 1){
        echo "email exist";
    }else{
        $sql = mysql_query ("INSERT INTO emails (email) VALUES ('$email')");
        echo "Thank you for Submitting. Redirecting back to Home Page";
    }
}

用以下代码替换你的代码:)

相关问题