Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP while循环只迭代一次_Php_Loops_While Loop_Iteration - Fatal编程技术网

PHP while循环只迭代一次

PHP while循环只迭代一次,php,loops,while-loop,iteration,Php,Loops,While Loop,Iteration,快速提问 $sql=mysql\u查询(“从状态为0的cronjobs中选择*) while($cronjob=mysql\u fetch\u数组($sql)){ 如果($cronjob['suid']!=$cronjob['cuid'])){ //回声“不相等”; $set=0; $sid=$cronjob['sid']; $suid=$cronjob['suid']; $cuid=$cronjob['cuid']; $set=notify($sid、$suid、$cuid); 如果($set

快速提问

$sql=mysql\u查询(“从状态为0的cronjobs中选择*)

while($cronjob=mysql\u fetch\u数组($sql)){
如果($cronjob['suid']!=$cronjob['cuid'])){
//回声“不相等
”; $set=0; $sid=$cronjob['sid']; $suid=$cronjob['suid']; $cuid=$cronjob['cuid']; $set=notify($sid、$suid、$cuid); 如果($set==1){ //回声“已通知”
; $sql=“UPDATE cronjobs SET status='1',其中id='”$cronjob['id']。”; if(mysql_查询($sql)){ 回声“1
”; $set=0; } } } } }
notify()
返回1
(数字)


问题是即使有更多记录,也只执行while循环的一次迭代。我不知道这里怎么了。请帮帮我

请将内部$sql变量名更改为其他名称。.外部$sql和内部$sql发生冲突

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");

while($cronjob = mysql_fetch_array($sql)){
    if($cronjob['suid'] != $cronjob['cuid']){
        //echo 'not equal<br>';
        $set = 0;
        $sid = $cronjob['sid'];
        $suid = $cronjob['suid'];
        $cuid = $cronjob['cuid'];
        $set = notify($sid, $suid, $cuid);
        if($set==1){
            //echo 'notified<br>';
            $sql_2 = "UPDATE cronjobs SET status = '1' WHERE id='".$cronjob['id']."'";
            if(mysql_query($sql_2)){
               echo '1<br>';
              $set = 0;
          }
        }
      }
   }
}
$sql=mysql\u查询(“从状态为0的cronjobs中选择*);
而($cronjob=mysql\u fetch\u数组($sql)){
如果($cronjob['suid']!=$cronjob['cuid'])){
//回声“不相等
”; $set=0; $sid=$cronjob['sid']; $suid=$cronjob['suid']; $cuid=$cronjob['cuid']; $set=notify($sid、$suid、$cuid); 如果($set==1){ //回声“已通知”
; $sql_2=“更新cronjobs集状态='1',其中id='”$cronjob['id']。”; if(mysql\u查询($sql\u 2)){ 回声“1
”; $set=0; } } } } }
请将内部$sql变量名更改为其他名称。外部$sql和内部$sql正在发生冲突

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");

while($cronjob = mysql_fetch_array($sql)){
    if($cronjob['suid'] != $cronjob['cuid']){
        //echo 'not equal<br>';
        $set = 0;
        $sid = $cronjob['sid'];
        $suid = $cronjob['suid'];
        $cuid = $cronjob['cuid'];
        $set = notify($sid, $suid, $cuid);
        if($set==1){
            //echo 'notified<br>';
            $sql_2 = "UPDATE cronjobs SET status = '1' WHERE id='".$cronjob['id']."'";
            if(mysql_query($sql_2)){
               echo '1<br>';
              $set = 0;
          }
        }
      }
   }
}
$sql=mysql\u查询(“从状态为0的cronjobs中选择*);
而($cronjob=mysql\u fetch\u数组($sql)){
如果($cronjob['suid']!=$cronjob['cuid'])){
//回声“不相等
”; $set=0; $sid=$cronjob['sid']; $suid=$cronjob['suid']; $cuid=$cronjob['cuid']; $set=notify($sid、$suid、$cuid); 如果($set==1){ //回声“已通知”
; $sql_2=“更新cronjobs集状态='1',其中id='”$cronjob['id']。”; if(mysql\u查询($sql\u 2)){ 回声“1
”; $set=0; } } } } }
只是一个观察:

因为你有:

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");  
while($cronjob = mysql_fetch_array($sql)){ 
它将在每次通过循环时执行查询。如果有100行,它将执行100次。如果您这样做,那么它只执行一次

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");  
$res = mysql_fetch_array($sql);
while($cronjob = $res){ 
它也不会有冲突

只是一个观察:

因为你有:

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");  
while($cronjob = mysql_fetch_array($sql)){ 
它将在每次通过循环时执行查询。如果有100行,它将执行100次。如果您这样做,那么它只执行一次

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");  
$res = mysql_fetch_array($sql);
while($cronjob = $res){ 

它也不会有冲突

当您有相同的查询变量($query)时,显然会出现问题
和结果对象($Result)。请在WHILE循环中为mysql_query()尝试不同的名称。

当您有相同的查询($query)变量时,显然会出现问题
和结果对象($Result)。请在WHILE循环中为mysql_query()尝试不同的名称。

WHILE循环中的if条件对多个记录是否为true?@heyanshukla可能是。但大多数的记录都不会。这在处理一条记录后就停止了。然后首先在while循环中回显if条件中的某些内容。并检查迭代次数。while循环中的if条件对多条记录是否为真?@heyanshukla可能是。但大多数的记录都不会。在处理一条记录后,这就停止了。然后首先在while循环中回显if条件中的某个内容,并检查迭代次数。它肯定没有通过ref,先生。它肯定没有通过ref,先生。这是与已接受答案相同的建议。这是与已接受答案相同的建议。