为什么我的PHP if语句不能正常工作


Why is my PHP if statement not working correctly?

我正在创建一个评论系统,当收到新的评论时,我会给他们发电子邮件。

我在phpMyAdmin中创建了一个名为email_notifications的表。

问题出在这个代码上:

if(mysql_num_rows(mysql_query("SELECT * FROM email_notifications WHERE email='$email'") or die(mysql_error())) <= 1) {
    mysql_query("INSERT INTO email_notifications (email) VALUES ('$email')");
    echo mysql_num_rows(mysql_query("SELECT * FROM email_notifications WHERE email='$email'"));
} 
else{
    die('EMAIL!');
}

这是为了防止同一封电子邮件中有多封出现在该表中。现在mysql_num_rows说有7行。

所以现在的声明是:

if(7 <= 1) {
    mysql_query("INSERT INTO email_notifications (email) VALUES ('$email')");
    echo mysql_num_rows(mysql_query("SELECT * FROM email_notifications WHERE email='$email'"));
}
else{
    die('Can''t post this email! Sorry.');
}

问题是,它仍然在表中插入电子邮件地址,但不应该。它应该返回不能发布此电子邮件!对不起

这可能是我遇到过的最奇怪的问题,我无法解决:(

请帮忙,提前谢谢。

显然,mysql_num_rows(mysql_query("SELECT * FROM email_notifications WHERE email='$email'") or die(mysql_error())的值不等于7,因此小于或等于1。这就是if语句没有按预期运行的原因。

此外,请将您的代码格式设置得更好:

$query = mysql_query("SELECT * FROM email_notifications WHERE email='$email'") or die(mysql_error());
$numberOfRows = mysql_num_rows($query);
echo $numberOfRows; //check the number of rows.
if($numberOfRows <= 1) {
    mysql_query("INSERT INTO email_notifications (email) VALUES ('$email')");
    $query_ = mysql_query("SELECT * FROM email_notifications WHERE email='$email'");
    var_dump(mysql_num_rows($query_));
} 
else{
    die('EMAIL!');
}

只添加一个键有什么问题?

ALTER TABLE email_notifications ADD UNIQUE email (email)

再也不用担心重复了。