确定一列是否包含由多行组成的内容并动态创建表列

时间:2019-03-09 20:44:46

标签: php mysql

我试图创建一个表列的次数与sql表某些列中的内容的次数相同,然后以相同的方式用内容填充这些列。以下代码用于确定哪些列不为空,从而为$n添加一个额外的值,该值将使列$n次。

尽管仅前四列具有内容,但是下面的代码将添加到$n中,就像空白列中有内容一样。如何检查可能包含多行的整个列是否包含内容?

$query = "
SELECT * 
  FROM analysis_database a
  JOIN microbiology_analysis_database m
    ON a.m_analysis_id = m.id 
 WHERE order_id = $order_id 
   AND a.analysis_type = 'Microbiological' 
   AND m.analysis_type = 'Microbiological';
";
    $result = mysqli_query($conn, $query);
    $fetch = mysqli_fetch_array($result);

$n = 0;
if (!is_null($fetch['step_1'])) {
    $n++;
} 
if (!is_null($fetch['step_2'])) {
    $n++;
} 
if (!is_null($fetch['step_3'])) {
    $n++;
} 
if (!is_null($fetch['step_4'])) {
    $n++;
} 
if (!is_null($fetch['step_5'])) {
    $n++;
} 
if (!is_null($fetch['step_6'])) {
    $n++;
} 
if (!is_null($fetch['step_7'])) {
    $n++;
} 
if (!is_null($fetch['step_8'])) {
    $n++;
} 
if (!is_null($fetch['step_9'])) {
    $n++;
}

这部分用于动态创建表头:

for ($k = 1 ; $k < $n; $k++) { 
    $output .= '<th>Step '.$k.'</th>';
}

这是对应标题的内容:

for ($k = 1 ; $k < $n; $k++) { 
    <td>Column Content</td>;
}

1 个答案:

答案 0 :(得分:1)

我认为问题可能是msyqli_fetch_array()仅在其实际数据库值为null时才将值设置为NULL。从PHP手册:

Note: This function sets NULL fields to the PHP NULL value.

因此$fetch将包含查询的第一匹配行,而$fetch['step_5']仅在数据库中为NULL时才为null。也许它们是空字符串?

根据Barmar的评论,也许尝试使用empty()代替is_null()。