【发布时间】:2021-12-17 12:13:10
【问题描述】:
每次在选择下拉菜单中选择一个值时,我总是得到错误的结果。我希望这个过程是这样的,在选择一个 busnum(公交车号)后,下一个下拉菜单将显示可用的座位号(基于 busnum、sched date 和 sched time),除了那些已经被占用的号码。但是每次我运行我的代码时,它都会显示可用的座位,但是当那个 busnum 有多个座位时,它只会隐藏一个座位号(被占用)。例如,我选择 busnum 30,然后 busnum 30 已经有 3 个座位(1、3、9),所以如果我点击下一个下拉菜单(座位号),它应该隐藏 1、3、9 出的 15。但它只隐藏了 1 并且 3 和 9 仍然显示。 到目前为止,这是我那部分的代码:
$sel = "SELECT * FROM ticket";
$rslt = mysqli_query($conn, $sel);
if($rslt->num_rows>0)
{
while($rows = $rslt->fetch_assoc())
{
$date = $rows['Tk_Sch_Date'];
$time = $rows['Tk_Sch_Time'];
$sel2 = "SELECT * FROM ticket WHERE Bus_Plate_Number='".$_GET['busnum']."' AND Tk_Sch_Date = '".$date."' AND Tk_Sch_Time='".$time."' AND Tk_Stat = 'PAID'";
$rslt = mysqli_query($conn, $sel2);
if($rslt->num_rows>0)
{
while($data = $rslt->fetch_assoc())
{
$chsnseat = $data['Tk_Chsn_Seat'];
$sel3 = "SELECT * FROM seat WHERE NOT Seat_Num ='".$chsnseat."'";
$result = mysqli_query($conn, $sel3);
if($result->num_rows>0)
{
while($rows=$result->fetch_assoc())
{
?>
<option value="<?=$rows['Seat_Num']?>"><?=$rows['Seat_Num']?></option>
<?php
}
}
}
}
}
}
else
{
$sel = "SELECT * FROM seat";
$result = $conn->query($sel);
if($result->num_rows>0)
{
while ($rows = $result->fetch_assoc())
{
?>
<option value="<?php echo $rows['Seat_Num']; ?>"><?php echo $rows['Seat_Num']; ?>
</option>
<?php
}
}
}
}
【问题讨论】:
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!