php - While 循环语法错误(无限循环)

标签 php mysql loops while-loop

我正在尝试在一个表中显示来自 MySQL 数据库的图像,每行三个。我可以做到这一点,但问题是我的原始代码有它,所以如果你的 MySQL 表中只有一行,它无论如何都会每行运行代码 3 次,并留下两个空 <td>的(如果有两行,则留一空)。我试图运行一个循环,如果剩余的行数少于三行,则运行循环多次并退出。我一遍又一遍地查看这段代码并自言自语,但似乎找不到问题出在哪里。我得到的错误是它无限地运行循环。我当前有两行,所以它正在做的是每个 <tr> 运行循环两次但永远。

我认为向 $rowcounter 添加 3 会停止循环。 $rowcounter 从 0 开始,循环运行。 3 被添加到 $rowcounter (使其成为 3),这将使其大​​于 $num_rows_temp (由于只有两行,因此将是 2)并且循环将不会执行。同样,问题一定出在第一个 while 循环中,因为它在我的表中无限地生成新行...$rowcounter 没有添加 3 是否有原因?

(另外,请忽略 fetch_arrays 下的变量声明。一旦我让循环工作,这些将用于功能。不过它们现在看起来很无聊......)

有人可以帮我弄清楚我这里出了什么问题吗?非常感谢。

<?php
$rowcounter=0;

if($num_rows_temp==0){
echo "No pictures yet!";
}
else{
//BEGIN JOB POSTING                             
    while($rowcounter<=$num_rows_temp){
        $remaining=$num_rows_temp-$rowcounter;
        $counter=1;
        echo "<tr>";
        //IF THE REMAINING AMOUNT OF ROWS IS LESS THAN THREE, RUN THE WHILE LOOP
        //FOR THE AMOUNT OF REMAINING ROWS
        if ($remaining>0 && $remaining<3){
            while($counter<=$remaining){
                $row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM);
                $id = $row_temp[0];
                $location = $row_temp[1];
                $name = $row_temp[2];
                $email = $row_temp[3];
                echo "<td>
                <a href='".$location."'>
                <img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" />
                </a>
                </td>";
                $counter++; 
             } //END WHILE
          } //END IF
          else{
              while($counter<=3){
                  $row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM);
                  $id = $row_temp[0];
                  $location = $row_temp[1];
                  $name = $row_temp[2];
                  $email = $row_temp[3];
                  echo "<td>
                  <a href='".$location."'>
                  <img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" />
                  </a>
                  </td>";
                  $counter++;   
               } //END WHILE
           } //END ELSE
           echo "</tr>";
           $rowcounter+3;
        } //END WHILE
    } //END ELSE
?>

最佳答案

您的$rowcounter+3; 没有增加$rowcounter。更改为-

$rowcounter +=3;

就像$rowcounter+3;一样,只有在您进行回显时才有效

echo $rowcounter+3;  // would echo 3 each time

此外,您还在 while 循环内设置 $counter

while($rowcounter<=$num_rows_temp){
    $remaining=$num_rows_temp-$rowcounter;
    $counter=1;

所以即使你通过这样做来增加它

$counter++;

一旦再次启动while()循环,它将被设置回1。您需要在 while() 之前声明它。

关于php - While 循环语法错误(无限循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549156/

相关文章:

php - sleep() 在 PHP 中是如何工作的

php - 如何在视频上传时创建缩略图?

mysql - 获取 2 个表中的 COUNT() 和 COUNT(DISTINCT()) 值

mysql - mysql 中索引列上的简单 where 条件导致 sql 性能不佳

mysql - 在mysql中用循环填充表

r - 我是 R 中编码的新手,无法为问题创建循环

Python:在列表中查找最长/最短的单词并在函数中调用它们

php - 如何通过连接输出用户信息到表中

php - 如何跟踪 1 页网站的访问持续时间

mysql - sql join on string = integer 以在任何 RDBMS 上工作