我试图创建一个表列的次数与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>;
}
答案 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()。