Php 在MySQL中避免重复
所以我有一个订阅系统,我不希望用户能够用同一封电子邮件订阅两次 我想到的是使用PHP时没有任何重复的MySQL内容,所以我想我可以:Php 在MySQL中避免重复,php,mysql,Php,Mysql,所以我有一个订阅系统,我不希望用户能够用同一封电子邮件订阅两次 我想到的是使用PHP时没有任何重复的MySQL内容,所以我想我可以: $checkvar = mysql_query("SELECT email FROM subscribers_list WHERE email = '" . $email . "'"); if (empty($checkvar)){ echo "There is no duplicate."; }else {
$checkvar = mysql_query("SELECT email FROM subscribers_list WHERE email = '" . $email . "'");
if (empty($checkvar)){
echo "There is no duplicate.";
}else {
echo "Duplicate found!";
}
但是由于一些未知的原因,上面的代码无法按预期工作。mysql\u查询返回一个
结果
而不是数组或任何数据变量,因此请使用
if (!(mysql_num_rows($checkvar))>0) { echo "There is no duplicate."; }
else { echo "Duplicate found!"; }
并尝试格式化您的代码 添加MySQL约束 它不允许任何代码插入同一封电子邮件两次
ALTER TABLE subscribers_list ADD CONSTRAINT unique_email UNIQUE (email)
不,你不能那样做。使用
mysql\u num\u rows()
-即:$numrows=mysql\u num\u rows($checkvar);如果($numrows>0){echo“存在重复”}否则{//keep going}
如果您在用户电子邮件列中添加一个“unique”索引,就足以阻止重复的电子邮件。cough cough@JayBlanchard决不仅仅是这样,更像是对op的提醒。您确定吗?为什么不直接复制呢。如果>0
表示找到了一条记录。这与说if==1的意思相同,意思是if大于零。@Prashank我应该等5分钟。现在证据不见了lol@HackerManiac不客气。然而,我个人最喜欢的是从积极开始,然后是消极;但那只是我;-)if(mysql_num_rows($checkvar)<1)看起来更干净(只是说)