$nr=$db->getall($name);
for($i=0;$i<ceil($n/$m);$i++){
     $t=$i%$m;
     $p=$i*6;
     $s=$n>5?6:$n;   //每次取6行
$name="SELECT * FROM `address` WHERE `timees`='0' AND `data`=1 LIMIT $p,$s";
$nr=$db->getall($name);
..........................................此处为操作发送邮件成功略................................
if($mail->Send()){
      $mail->ClearAddresses(); 
      $sql="UPDATE `address` SET `timees`=1 WHERE `id`='{$pid}'";
      $sql=mysql_query($sql);}
  这样过后在数据库看见的是id=1的没有更新,id=2到id=5的更新了,然后就是每隔6个id的更新了。 为什么并没有按顺序更新

解决方案 »

  1.   

    '{$pid}
    你要在for里,加个条件,或,先把执行后的sql语句,打印出来看看
    这样,可以有针对性。
      

  2.   

    你的 $name="SELECT * FROM `address` WHERE `timees`='0' AND `data`=1 LIMIT $p,$s";需要是 limit 0,5, 这样选择 1,2,3,4,5
    然后是 limit 5,5  这样选择 6,7,8,9,10
      

  3.   

    for循环里面嵌套sql,最好不要这样哦,除非万不得已,因为循环里面嵌套sql执行效率很低