如果查询结果为空,显示空/空表或仅显示表头的正确实现是什么?
**注意事项/条件
无页面重定向
不创建两个表,一个用于空结果查询,另一个用于结果查询
或者有更好的方法吗
这是一个示例代码:
<?php if(isset($result)){ ?>
<table>
<tr>
<td>Name</td>
<td>Email</td>
</tr>
<?php foreach($result as $key => $data){?>
<tr>
<td><?php echo $data['name'];?></td>
<td><?php echo $data['email_add'];?></td>
</tr>
<?php }?>
</table>
<?php } ?>
这里的问题是它仍然在foreach循环中抛出一个错误。
当查询结果返回false时,返回一个空数组,而不是
我希望这能有所帮助,并准备在需要时获得更多帮助
关于异常:
您检查是否设置了$results
,但随后尝试在$result
上循环(没有尾部s)。我相信你有错别字,这可能是问题的一部分。修复拼写错误并确保结果不为空(可能已设置,但仍然为空)可能会修复引发的异常。
关于始终显示标题:
无论怎样都要显示标题,请将if语句移到循环之前。
FYI-关于格式良好的HTML表:
要在表上声明表头,通常使用<thead>
元素,将其与表的内容分离。格式良好的HTML表示例:
<table>
<thead>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>john@email.com</td>
</tr>
</tbody>
</table>
有关格式化表格的更多信息
在您的情况下,我会将循环放在<tbody>
中的<tr>
元素周围。
<?php if(isset($result) && !empty($result)): ?>
<table>
<tr>
<td>Name</td>
<td>Email</td>
</tr>
<?php foreach($result as $data): ?>
<tr>
<td><?php echo $data['name'];?></td>
<td><?php echo $data['email_add'];?></td>
</tr>
<?php endforeach ?>
</table>
<?php else: ?>
No results found.
<?php endif ?>
注意,我更喜欢在PHP模板中使用长形式的语句,因为它大大提高了可读性。