为什么我的PHP if语句无法正常工作?

时间:2012-02-17 00:44:37

标签: php mysql

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

我在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.');
}

问题是它仍在将电子邮件地址插入表中,但不应该。它应该返回无法发布此电子邮件!遗憾。

这可能是我遇到的最棘手的问题,我无法弄明白:(

请提前帮助,谢谢。

2 个答案:

答案 0 :(得分:6)

添加密钥有什么问题?

ALTER TABLE email_notifications ADD UNIQUE email (email)

再也不用担心重复了。

答案 1 :(得分:6)

显然,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!');
}