可能重复:
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.';
}
任何人都知道我会这样做吗?
答案 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.';
}
}