mysql — PHP Email, если введена новая запись SQL, электронной почты при обновлении нет

У меня есть электронное письмо, которое отправляется (через 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, что кажется правильным, но -> disabled_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) {

1

Решение

Согласно документам: https://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html

Для операторов INSERT … ON DUPLICATE KEY UPDATE значение затрагиваемых строк равно 1, если строка вставляется как новая строка, и 2, если существующая строка обновляется.

Итак, используйте: mysql_affected_rows, или любой другой эквивалент находится в вашей устаревшей / устаревшей библиотеке БД.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]