如果查询返回false,则显示空/空表

时间:2013-02-10 22:14:16

标签: php

如果查询结果为空,显示空/空表或只是表头的正确实现是什么?

**音符/条件
没有页面重定向
没有创建两个表,一个用于查询空结果,一个用于查询结果

或者有更好的方法吗? 这是一个示例代码:

<?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循环上抛出错误。

3 个答案:

答案 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>

More on formatting tables

在您的情况下,我会将<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模板的长格式语句,因为它极大地提高了可读性。