我在'约会'表中有两个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 } ?>
答案 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
。然后在第二个查询中使用它,因此它只保留上一个循环中的最后一个值。
有道理。