我正在创建一个使用PDO方法从SQL数据库中获取数据的表。数据加载正常,但我遇到的问题是我正在使用的'for循环'在每个(表行)之后乘以(表头)。
我想知道问题可能是什么解决方案。
感谢任何帮助,谢谢!
以下是代码:
<?php
for($i=0; $row = $result->fetch(); $i++){
?>
<table id="eventstable">
<tr>
<th>Event ID</th>
<th>Event Name</th>
<th>Location</th>
<th>Date</th>
</tr>
<tr>
<td><?php echo $row['event_id']; ?></td>
<td><?php echo $row['event_name']; ?></td>
<td><?php echo $row['event_location']; ?></td>
<td><?php echo $row['event_date']; ?></td>
</tr>
</table>
<?php }
?>
最上面是连接文件,它创建了与本地数据库的连接,以及一个语句,它引入了我想要从数据库中显示的信息,如下所示:
$result = $conn->prepare("SELECT * FROM events");
$result->execute();
答案 0 :(得分:0)
很少有可能的解决方案
i)将标题部分和表格开始和结束标记放在for循环之外。如果没有数据,这将为您提供带有标题的空表。
ii)仅在i = 0时放置if条件和打印头,并将表标签放在循环外。如果没有数据,这将为您提供一个空表。
编辑:方法II(因为你正在学习)
<table id="eventstable">
<?php
for($i=0; $row = $result->fetch(); $i++){
if($i == 0){
?>
<tr>
<th>Event ID</th>
<th>Event Name</th>
<th>Location</th>
<th>Date</th>
</tr>
<?php }//if statment ends here ?>
<tr>
<td><?php echo $row['event_id']; ?></td>
<td><?php echo $row['event_name']; ?></td>
<td><?php echo $row['event_location']; ?></td>
<td><?php echo $row['event_date']; ?></td>
</tr>
<?php }
?>
我建议你学习以后,使用比循环更好的方法。查看php PDO手册并查看while或foreach的使用。它会有所帮助。
答案 1 :(得分:0)
试试这个:
<table id="eventstable">
<tr>
<th>Event ID</th>
<th>Event Name</th>
<th>Location</th>
<th>Date</th>
</tr>
<?php
foreach($result->fetch() as $row){
?>
<tr>
<td><?php echo $row['event_id']; ?></td>
<td><?php echo $row['event_name']; ?></td>
<td><?php echo $row['event_location']; ?></td>
<td><?php echo $row['event_date']; ?></td>
</tr>
<?php }
?>
</table>
答案 2 :(得分:0)
只放入循环,循环应该是什么,其他一切都应该在循环之外。
例如,您的代码可能如下所示
<table id="eventstable">
<tr>
<th>Event ID</th>
<th>Event Name</th>
<th>Location</th>
<th>Date</th>
</tr>
<?php
for($i=0; $row = $result->fetch(); $i++){
?>
<tr>
<td><?php echo $row['event_id']; ?></td>
<td><?php echo $row['event_name']; ?></td>
<td><?php echo $row['event_location']; ?></td>
<td><?php echo $row['event_date']; ?></td>
</tr>
<?php
}
?>
</table>