PHP电子邮件如果SQL条目是新的,没有电子邮件如果更新


PHP Email if SQL entry is new, no email if update

当新用户添加到数据库中时,我有一封电子邮件(通过PHPMailer)发送出去。如果电子邮件(密钥)已经存在,则使用ON DUPLICATE key UPDATE函数更新数据库。但是,我不希望在邮件更新时才发送,只希望在邮件是新的时候才发送。我如何检查(PHP)如果SQL结果是更新或插入,然后使用if语句发送/不发送电子邮件?

$sql = "INSERT INTO premium_waitinglist (date, email, ip) VALUES ('".$serverDate."', '".$_POST['user-email']."', '".$userIP."') ON DUPLICATE KEY UPDATE waiting = 1";
if ($conn->query($sql) == true) {} else { echo "<kbd>Error: ".$conn->error."</kbd>";}
$mail = new PHPMailer;
$fromEmail = $_POST['user-email'];
$body = file_get_contents($urlBody);
$mail->isSMTP();
$mail->Host = $mailHost;
$mail->SMTPAuth = true;
$mail->Username = $mailUsername;
$mail->Password = $mailPassword;
$mail->Port = 2525;
$mail->From = $fromEmail;
$mail->FromName = $fromName;
$mail->addAddress($toEmail, $toName);
$mail->Subject = $mailSubject;
$mail->isHTML(true);
$mail->Body = $body;
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

编辑1:我可能调用这个错误,但是$result返回1,这似乎是正确的,但是->affected_rows是空的。

$sql = "INSERT INTO premium_waitinglist (date, email, ip) VALUES ('".$serverDate."', '".$_POST['user-email']."', '".$userIP."') ON DUPLICATE KEY UPDATE waiting = 1";
$result = $conn->query($sql);
if ($result == true) {} else { echo "<kbd>Error: ".$conn->error."</kbd>";}
echo $result;
echo $result->affected_rows;
if ($result->affected_rows == 1) {

根据文档:https://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html

For INSERT…在DUPLICATE KEY UPDATE语句中,如果该行作为新行插入,则受影响的行值为1,如果已存在的行被更新,则受影响的行值为2。

因此,请使用:mysql_affected_rows,或者您所选择的未弃用/未过时的DB库上的任何等效值。

相关文章: