在里面而2和2的结果

时间:2014-04-01 12:25:14

标签: php if-statement while-loop

<?php
                 $con=mysqli_connect("","","","");
                 if (mysqli_connect_errno())
                  {
                 echo "Failed to connect to MySQL: " . mysqli_connect_error();
                  }
                  $result = mysqli_query($con,"SELECT * FROM itiraf");
                  $result2 = mysqli_query($con,"SELECT oy FROM users WHERE username='". $Account->session('display_name') ."'");
               if(mysqli_num_rows($result)=="0"){echo "Henüz itiraf yapılmamış";} 
                  else{
                  echo "<table border='1' class='imagetable'>
                  <tr>
                  <th>NO:</th>
                  <th>İsim</th>
                  <th>İtiraf</th>
                  <th>Oy</th>
                  <th>Oy Kullan</th>
                  </tr>";

                    while($row = mysqli_fetch_array($result)){
                   echo "<tr>";
                   echo "<td><b>" . $row['id'] . "</b></td>";
                   echo "<td><b>" . $row['username'] . "</b></td>";
                   echo "<td><b>" . $row['itiraf'] . "</b><br></td>";
                   echo "<td><b>" . $row['oy'] . "</b><br></th>";

                   while($row2 = mysqli_fetch_array($result2)){
                         if ($row2['oy'] ==10) { echo "<td>Oy kullandınız</td>";}
                              else{echo "<td><a href='oy.php?id={$row[id]}'><img src='assets/images/up.png'/></a></td>";}}

                   echo "</tr>";  
                   echo "</form>";}
                   echo "</table>"; }
                mysqli_close($con);?>

第一次工作。第二,虽然工作但不太好。只有一次,我可以看到竖起大拇指的图像。我在这里添加了关于表的所有代码。任何想法?

2 个答案:

答案 0 :(得分:0)

在伪代码中,它附加:

{ //first iteration of while($row = mysqli_fetch_array($result))
     ... 
     { //first iteration of while($row2 = mysqli_fetch_array($result2))

     }
     { //Second iteration of while($row2 = mysqli_fetch_array($result2))

     }
     ...
     { //last iteration of while($row2 = mysqli_fetch_array($result2))

     }
     // know, $result2 is empty

}
{//Second iteration of while($row = mysqli_fetch_array($result))
    ...
    //Here, $result2 is empty, so the second while loop doesn't work
}

如果你想重用$ result2,你可以在之前将它存储在一个数组中,然后在while循环中使用这个数组

答案 1 :(得分:0)

您的第二个while循环遍历$result2.中存储的查询结果 因此,第一次完全执行第二次while循环时,光标移动到表的末尾并且不会返回到第一个位置。
一种解决方案是将第二个查询的所有值(其结果在$result2中)存储在另一个数组中,然后在第二个while循环中使用该数组。
另一个解决方案是在第一个while循环中移动第二个查询本身,但这意味着每次都会执行查询。