好吧,我想要的是遍历数据库并向数据库存储的时间和日期低于当前日期且发送值为 0 的每封电子邮件发送一封电子邮件。工作原理是它遍历电子邮件循环并发送但是我想要做的是将数据库中的发送值从 0 设置为 1,这样如果我将来运行该程序,它就不会再次向我已经发送电子邮件的人发送电子邮件。我尝试在 while 循环中将发送值更新为 1,但是当我执行文件时,它会在一封电子邮件后停止,因此它不会循环数据库
<?php
include_once("db.php");
$date = new DateTime();
//echo $date->format('Y-m-d H:i:s')
$query = "SELECT timedate, email, sent, msgid FROM mailer";
$result = mysql_query($query);
echo "<table>";
while($row = mysql_fetch_array($result)){
$tot = $row['timedate'];
$ema = $row['email'];
$sendflag = $row['sent'];
$mess = $row['msgid'];
if(strtotime($tot) > time()) {
//echo "<tr><td>" .$row['timedate']."</td><td>";
echo"database dates higher then now dates" . "<br>";
echo "<tr><td>" .$row['email']."</td><td>" ."<br>";
echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
echo "<tr><td>" .$row['sent']."</td><td>" ."<br>";
}
else {
echo"database dates lower then now dates" . "<br>";
echo "<tr><td>" .$row['email']."</td><td>". "<br>";
echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
echo "<tr><td>" .$row['sent']."</td><td>" ."<br>";
$subject = "This is subject";
$message = "This is simple text message.";
$header = "From:abc@somedomain.com \r\n";
$to = $row['email'];
$retval = mail ($to,$subject,$message,$header);
if( $retval == true )
{
echo "Message sent successfully..." ."<br>";
}
else
{
echo "Message could not be sent..." ."<br>";
}
//$sql = "UPDATE mailer SET sent = 1 WHERE msgid = $mess";
$query = "UPDATE mailer SET sent = 1 WHERE msgid = $mess";
$result = mysql_query($query);
}
}
mysql_close();
?>
最佳答案
例如将末尾的$result重命名为$result2。您正在覆盖正在循环的变量。
关于php - MYSQL 在循环内调用查询会停止循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062421/