如果查询结果为空,显示空/空表或只是表头的正确实现是什么?
**音符/条件
没有页面重定向
没有创建两个表,一个用于查询空结果,一个用于查询结果
或者有更好的方法吗? 这是一个示例代码:
<?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循环上抛出错误。
答案 0 :(得分:1)
关于例外:
您检查是否设置了$results
,但是您尝试循环$result
(没有尾随s)。我相信你有一个错字,这可能是问题的一部分。修复拼写错误并确保结果不为空(可能已设置但仍为空)可能会修复抛出的异常。
关于始终显示标题:
要显示标题,无论如何,将if语句移到循环之前。
仅供参考 - 关于格式良好的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>
在您的情况下,我会将<tr>
元素放在<tbody>
内。
答案 1 :(得分:1)
当查询结果返回false时,返回一个空数组
我希望这有所帮助,并在需要时准备好提供更多帮助
答案 2 :(得分:0)
<?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模板的长格式语句,因为它极大地提高了可读性。