检查数据库中是否已存在记录

时间:2011-09-06 10:58:13

标签: php mysql

  

可能重复:
  insert contacts into database but does not want to duplicate already existing contact

您好。在插入副本之前,我正在尝试检查电子邮件是否已存在。

因此,我需要检查数据库中是否存在电子邮件地址,如果存在,则输出一条消息,表明它已存在。否则我想将记录插入数据库。

以下是我现在用于插入电子邮件的代码,但我不确定如何检查数据库是否存在。

$addEmailQuery  = sprintf("INSERT INTO `subscribe`(`Email`) VALUES('%s')",
                            mysql_real_escape_string($_POST['inputEmail']));
        $addEmailResult = mysql_query($addEmailQuery);
        if($addEmailResult){
            echo 'Email successfully submitted';

        } else{
            echo 'Sorry, we could not submit your email. Please try again.';
        }

任何人都知道我会这样做吗?

2 个答案:

答案 0 :(得分:0)

在插入之前执行SELECT并检查是否为此电子邮件返回了值。 这是最简单的方法。

$CheckEmailQuery  = sprintf("SELECT `Email` FROM `subscribe` WHERE `Email` = '%s'",
                        mysql_real_escape_string($_POST['inputEmail']));
    $CheckEmailResult = mysql_query($CheckEmailQuery);
    if($CheckEmailResult){
        // Do What you are doing above
    }

我刚刚给出了这个想法,但未对其进行测试。

答案 1 :(得分:-1)

<强>编辑: 初始答案将在多用户环境中造成问题。

你应该这样做

INSERT ... ON DUPLICATE KEY UPDATE

关注this answer以使其正确无误。

原始帖子:

if(mysql_num_rows(mysql_query("SELECT * FROM subscribe WHERE Email = '".mysql_real_escape_string($_POST['inputEmail'])."'")))
{
     echo "already submitted";
}   
else
{

    $addEmailQuery  = sprintf("INSERT INTO `subscribe`(`Email`) VALUES('%s')",
                        mysql_real_escape_string($_POST['inputEmail']));
    $addEmailResult = mysql_query($addEmailQuery);
    if($addEmailResult)
    {
       echo 'Email successfully submitted';

     } 
     else
     {
        echo 'Sorry, we could not submit your email. Please try again.';
     }

}