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

标签 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.');
}

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

这可能是我遇到过的最奇怪的问题,我想不通:(

请帮助,在此先感谢。

最佳答案

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

关于php - 为什么我的 PHP if 语句不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321382/

相关文章:

mysql - 将 mysql 查询转换为 laravel 语法

mysql - 为什么这个 timestampdiff CASE 产生的 AVG 低于 WHEN 的值?

php - Wordpress:仅为帖子禁用标签

php - 编写准备好的语句以从表中检索数据( fatal error )

php - 多张图片上传问题

php - PHP中如何解析字符

java - 从一对一关系的连接表中选择数据

mysql - 如何根据 MySQL 中的关联表行数返回行?

java - 为 Android 实现 Kaazing EventSource

php - MySQL 中的唯一 ID?