You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP页面如何省略数据库返回的空列数据?

问题:如何隐藏Burials数据库查询中空值的列?

我有两个PHP文件,用于按特定顺序调取Burials数据库的数据,但需要省略为空的列。目前数据库数据可正常显示,但所有列都会展示。尝试了多种判断空值的代码片段后均触发500错误,求解决方法。

现有代码

网页端展示文件

<?php
if(is_array($fetchData)){      
  $id=1;
  foreach($fetchData as $data){
?>

<p></p>
<div><strong>Section:</strong> <?php echo $data['Section']??''; ?></div>
<div>Lot Number: <?php echo $data['LotNumber']??''; ?></div>
<div>Last Name: <?php echo $data['LastName']??''; ?></div> 
<div>First Name: <?php echo $data['FirstName']??''; ?></div>
<div>Middle Initial: <?php echo $data['MiddleInitial']??''; ?></div>
<div>Maiden Name:<?php echo $data['MaidenName']??''; ?></div>
<div>Suffix: <?php echo $data['Suffix']??''; ?></div>
<div>Born: <?php echo $data['Born']??''; ?></div>
<div>Died: <?php echo $data['Died']??''; ?></div>
<div>Veteran Info:<?php echo $data['VeteranInfo']??''; ?></div>
<div>Misc. Info: <?php echo $data['MiscInfo']??''; ?></div>   
</div></p>
<?php
  $Section;}}else{ ?>
<div>
<?php echo $fetchData; ?>
</div>
<div>
<?php
}?>
</div>

数据库查询文件

$db= $conn;
$tableName="Burials";
$columns= ['id', 'EndowmentNumber','Letter','LotSize','Section', 
'LotNumber','LotOwner','LastName', 'FirstName','MiddleInitial','MaidenName','Suffix', 
'Born','Died','VeteranInfo','MiscInfo'];
$fetchData = fetch_data($db, $tableName, $columns);
function fetch_data($db, $tableName, $columns){
 if(empty($db)){
  $msg= "Database connection error";
 }elseif (empty($columns) || !is_array($columns)) {
  $msg="columns Name must be defined in an indexed array";
 }elseif(empty($tableName)){
  $msg= "Table Name is empty";
 }else{
$columnName = implode(", ", $columns);
$query = "SELECT ".$columnName." FROM $tableName"." ORDER BY Section, LotNumber";
$result = $db->query($query);
if($result== true){ 
 if ($result->num_rows > 0) {
$row= mysqli_fetch_all($result, MYSQLI_ASSOC);
$msg= $row;

 } else {
    $msg= "No Data Found"; 
 }
}else{
  $msg= mysqli_error($db);
}
}
return $msg;
}
?>

错误原因

之前的代码触发500错误,核心是语法问题:

  • 部分测试代码缺少闭合的},导致PHP解析失败
  • 原HTML存在无效嵌套(多余的</div></p>标签)
  • 混合PHP与HTML时,引号或代码拼接逻辑出错

解决方案

数据库查询文件无需修改,仅需调整前端展示逻辑,给每个字段添加非空判断,同时修复HTML结构。

修改后的前端展示代码

<?php
if(is_array($fetchData)){      
  foreach($fetchData as $data){
?>
<div class="burial-entry">
    <?php if(!empty(trim($data['Section']))): ?>
    <div><strong>Section:</strong> <?php echo $data['Section']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['LotNumber']))): ?>
    <div>Lot Number: <?php echo $data['LotNumber']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['LastName']))): ?>
    <div>Last Name: <?php echo $data['LastName']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['FirstName']))): ?>
    <div>First Name: <?php echo $data['FirstName']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['MiddleInitial']))): ?>
    <div>Middle Initial: <?php echo $data['MiddleInitial']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['MaidenName']))): ?>
    <div>Maiden Name: <?php echo $data['MaidenName']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['Suffix']))): ?>
    <div>Suffix: <?php echo $data['Suffix']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['Born']))): ?>
    <div>Born: <?php echo $data['Born']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['Died']))): ?>
    <div>Died: <?php echo $data['Died']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['VeteranInfo']))): ?>
    <div>Veteran Info: <?php echo $data['VeteranInfo']; ?></div>
    <?php endif; ?>

    <?php if(!empty(trim($data['MiscInfo']))): ?>
    <div>Misc. Info: <?php echo $data['MiscInfo']; ?></div>
    <?php endif; ?>
</div>
<hr> <!-- 可选:添加分隔线区分不同条目 -->
<?php
  }}else{ ?>
<div>
    <?php echo $fetchData; ?>
</div>
<?php }?>

关键修改说明

  • 非空判断优化:使用!empty(trim($data['字段名'])),同时过滤空值和纯空格内容,避免无效列显示
  • HTML结构修复:移除无效嵌套标签,给每个条目添加统一容器,结构更规范
  • 语法简化:采用PHP短条件标签<?php if(): ?>...<?php endif; ?>,混合HTML时可读性更强,降低语法错误概率
  • 冗余代码清理:删除未使用的$id和$Section变量,减少代码干扰

内容的提问来源于stack exchange,提问作者fiddler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:56:03