2015-10-13 129 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 .'"');