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

Sha*_*313 2 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!');
}
Run Code Online (Sandbox Code Playgroud)

这是为了防止同一封电子邮件中的多个电子邮件出现在该表中.而现在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.');
}
Run Code Online (Sandbox Code Playgroud)

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

这可能是我面临的最奇怪的问题,我无法弄清楚:(

请提前帮助,谢谢.

Nie*_*sol 6

添加密钥有什么问题?

ALTER TABLE email_notifications ADD UNIQUE email (email)
Run Code Online (Sandbox Code Playgroud)

永远不必再担心重复.


max*_*ax_ 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!');
}
Run Code Online (Sandbox Code Playgroud)

  • 我会改变整个事情来使用SELECT COUNT(*)或SELECT COUNT(email)来减少一次性网络流量. (3认同)