PHP MYSQLI while循环只获得1行

时间:2017-12-24 12:03:34

标签: php mysqli

我在'约会'表中有两个ID,分别是1和2(ID)。约会表中的两个ID来自“时间”表。时间表有这个ID(1,2,3,4,5)。

在此查询中,while循环回显两个ID,即1和2(ID),这是正确的。

<?php
            //appointment table
            $query1 = "SELECT * FROM appointment WHERE date_app = '$date' AND status = 'Active'";
            $result1 = mysqli_query($conn,$query1) or die("Error: ".mysqli_error($conn));;  


            while($row1=mysqli_fetch_array($result1)){
                $t = $row1['time_id'];
        ?>  
            <tr><td>
            <a href=""><?php echo $t; ?></a>
            </td></tr>

            <?php } ?>

在此查询中,我需要获取所有不等于上述查询值的ID。当我回音时,我得到2,3,4,5(ID)的结果,该结果应该是3,4,5(ID)。

<?php
           //time table
            $query11 = "SELECT * FROM time WHERE time_id != '$t' ORDER BY STR_TO_DATE(time_sched,'%h:%i%p')";
            $result11 = mysqli_query($conn,$query11) or die("Error: ".mysqli_error($conn));;    

            while($row11=mysqli_fetch_array($result11)){

        ?>  
            <tr><td>
            <a href=""><?php echo $row11['time_id']; ?></a>
            </td></tr>

            <?php } ?>

我在约会表中的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

经典

 $ids = [];
 while($row1=mysqli_fetch_array($result1)){
    $ids[] = $row1['time_id'];

 //..... other code
 }//end of while loop for clarity.

 $query11 = "SELECT * FROM time WHERE time_id NOT IN(".implode(',', $ids).") ORDER BY STR_TO_DATE(time_sched,'%h:%i%p')";

您只使用第一个循环中的最后一个ID。因此,您需要将这些ID存储在数组中,然后在IN的输入中使用它们。

换句话说,在第一个循环的每次迭代中都会覆盖变量$t。然后在第二个查询中使用它,因此它只保留上一个循环中的最后一个值。

有道理。