我正在创建一个评论系统,当有新评论时,我会给他们发电子邮件。
我在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.');
}
问题是它仍在将电子邮件地址插入表中,但不应该。它应该返回无法发布此电子邮件!遗憾。
这可能是我遇到的最棘手的问题,我无法弄明白:(
请提前帮助,谢谢。
答案 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!');
}