我正在创建一个评论系统,当有新评论出现时,我会通过电子邮件发送给他们。
我在 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/