繁体   English   中英

MYSQL在循环内调用查询可停止循环

[英]MYSQL calling a query inside a loop stops the loop

好吧,我想要的是遍历数据库并将电子邮件发送到数据库存储的时间和日期低于当前日期且其发送值为0的每封电子邮件。有效的方法是遍历电子邮件循环并发送电子邮件,但是我想做的就是将数据库中的已发送值从0设置为1,以便将来运行程序时,它不会再次将电子邮件发送给我已经发送过电子邮件的人。 我尝试将while循环内的send值更新为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。 您正在覆盖要循环的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM