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 {

所以我有一个订阅系统,我不希望用户能够用同一封电子邮件订阅两次

我想到的是使用PHP时没有任何重复的MySQL内容,所以我想我可以:

$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)看起来更干净(只是说)