2015-10-13 70 views
0

我是一名DBA,暂时担任我自己的开发人员。我正在为培训系统上的一些自动电子邮件编写一个PHP模板,该模板将定期向非活动学生发送信息。我认为,在更新中我的WHERE语句有问题,只会影响当前记录。我可以通过删除WHERE语句来更新所有记录,但没有任何记录。fetch_assoc()中的更新声明

任何人都可以看到我的错误?我的主要查询和我的邮件功能正常工作。

<?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); } 
} 
?> 

回答

1

你的报价需要修复的:

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中的变量在双引号被解析,而变量没有在单引号解析。

+0

谢谢!我看不到树林。 –

+0

相关说明:我计划使用其中3条语句通知学生各种标准,并在CRON中给他们打电话。我可以将所有3''调用放在同一个文本文件中并调用一次,还是需要3个单独的文件并分别调用它们。他们都会查询相同的表格。 –

+0

如果需要,您可以将所有3放在同一个文本文件中。如果你愿意,你也可以将它们分开;) –

0

如果EMAIL1是一个字符串,那么它必须在引号

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