下面的代码返回复选框行(每个 mySQL 表的正确数量)并且没有错误。问题是它没有抓取列值((按照:“.$row['Zone'].”:“.$row['RowNumber'].))放置在所述复选框旁边。
<?php
include'connect.php'
?>
<form method="post" action="chooseDate.php">
<?php
$sql = "
SELECT s.RowNumber, s.Zone,
FROM Seat AS s
LEFT JOIN Booking AS b, ON s.RowNumber = b.RowNumber,
AND b.PerfDate = ?,
AND b.PerfTime = ?,
WHERE b.RowNumber IS NULL,
GROUP BY s.RowNumber
";
$date = "$_POST[Date]";
$time = "$_POST[Time]";
$handle = $conn->prepare($sql);
$handle->execute(array($date, $time));
$res = $handle->fetchAll();
foreach($res as $row) {
echo "<input name='Seat' type='checkbox' value='".$row['Zone'].":
".$row['RowNumber']."'><br>";
}
?>
<input class="mybutton" type="submit" value="Choose Seat"/>
</form>
我使用相同的方法运行查询,它们按预期显示结果。这里唯一的区别是查询是 LEFT JOIN。结果显示在 shell 中。这是结果示例和一个复选框的预期输出。
|**RowNumber**|**Zone**|
|-------------|--------|
|Z20 |box 4 |
我哪里出错了?提前致谢。
最佳答案
你看过 HTML 输出吗?您将文本放入输入元素内。收盘>
是在正文之后。
您只需移动 >
即可解决此问题。到前面,但我认为最好生成一个 <label>
复选框之后或复选框周围的元素。如果您为复选框指定一个 id,并且为标签指定 for
属性指向该 id,文本也可以点击,这使得用户体验很棒。 :)
所以我建议像这样更改 for 循环:
$idcounter = 0;
foreach($res as $row) {
$id = 'Seat' . ($idcounter++);
echo "<input name='Seat' type='checkbox' id='$id'><label for='$id'>".$row['Zone'].":".$row['RowNumber']."</label><br>";
}
请注意,我删除了 value 属性。我不确定您是否需要它,但也许您需要两者:值和标签。如果是这样,您可以像以前一样放回该属性,只要确保在打开标签之前关闭输入元素即可。
关于php - 为什么在 PHP 中执行时 mySQL 查询结果不显示表中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40947627/