fetch_assoc() 中的更新语句

Update statement inside fetch_assoc()

我是一名DBA,暂时担任自己的开发人员。我正在为培训系统上的一些自动电子邮件编写一个 PHP 模板,该模板会定期吸引不活跃的学生。我有一个问题,我想,更新中的 WHERE 语句只影响当前记录。我可以通过删除 WHERE 语句来更新所有记录,但是 none 用它。

谁能看到我的错误?我的主要查询和我的邮件功能工作正常。

<?php

$link = mysqli_connect('localhost','xxx','xxx','xxx');

$result = mysqli_query($link, 'SELECT email1 FROM email_test WHERE last_login < (NOW() - INTERVAL 45 DAY) AND email_number=0');

if($result->num_rows >= 1){
$subject = "A test of the email CRON";
$message='It has been 45 days since your last login.';

while($row=$result->fetch_assoc()) {

$email="{$row['email1']}"; 

mysqli_query($link, 'UPDATE email_test SET email_number = 1, email_sent = NOW() WHERE email1=$email');

mail($email, $subject, $message); }
}
?>

您的报价需要修复:

mysqli_query($link, 'UPDATE email_test SET email_number = 1, email_sent = NOW() WHERE email1=$email');

应改为:

mysqli_query($link, "UPDATE email_test SET email_number = 1, email_sent = NOW() WHERE email1='$email'");

在php中变量用双引号解析,而变量不用单引号解析。

如果 email1 是一个字符串,那么它必须用引号引起来

mysqli_query($link, 'UPDATE email_test SET email_number = 1, email_sent = NOW() WHERE email1="' . $email .'"');