Php 验证表行是否在每个字段中都有数据

Php 验证表行是否在每个字段中都有数据,php,mysqli,Php,Mysqli,我想验证每个字段中的当前行是否有数据,如果没有,则不显示数据。请帮帮我。另外,建议在显示表数据时使用echo,或者我应该坚持使用html。提前谢谢!我一直在网上搜索,没有找到一些答案。哈哈 $ct_list = mysqli_query($conn,"select * from ct LEFT JOIN station on ct.station_id=station.station_id LEFT JOIN dilg_emp on dilg_emp.station_id=statio

我想验证每个字段中的当前行是否有数据,如果没有,则不显示数据。请帮帮我。另外,建议在显示表数据时使用echo,或者我应该坚持使用html。提前谢谢!我一直在网上搜索,没有找到一些答案。哈哈

$ct_list = mysqli_query($conn,"select * from ct LEFT JOIN station on ct.station_id=station.station_id LEFT JOIN dilg_emp on dilg_emp.station_id=station.station_id where dilg_emp.dilg_emp_id= $session_id"); 
if (mysqli_num_rows($ct_list) > 0){
    while ($ct_row_list = mysqli_fetch_array($ct_list)) {
        $ct_FName = $ct_row_list['ct_FName'];
        $ct_MName = $ct_row_list['ct_MName'];
        $ct_LName = $ct_row_list['ct_LName'];
        $ct_SName = $ct_row_list['ct_SName'];
        $ct_address = $ct_row_list['ct_address'];
        $ct_birthday = $ct_row_list['ct_birthday'];
        $ct_age = $ct_row_list['ct_age'];
        $ct_gender = $ct_row_list['ct_gender'];
        $ct_level_educ = $ct_row_list['ct_level_educ'];
        $ct_course = $ct_row_list['ct_course'];
        $ct_school = $ct_row_list['ct_school'];
        $ct_prev_covid = $ct_row_list['ct_prev_covid'];
        $ct_training_date = $ct_row_list['ct_training_date'];
        $ct_deployment_date = $ct_row_list['ct_deployment_date'];
        $ct_prev_emp = $ct_row_list['ct_prev_emp'];
        echo "<tr>
            <td>".
        $x++."
            </td>
            <td>
                $ct_FName $ct_MName $ct_LName $ct_SName
            </td>
            <td> 
                $ct_address
            </td>
            <td> 
                $ct_birthday
            </td>
            <td>
                $ct_age
            </td>
            <td>
                $ct_gender
            </td>
            <td>
                $ct_level_educ
            </td>
            <td>
                $ct_course
            </td>
            <td>
                $ct_school
            </td>
            <td>
                $ct_prev_covid
            </td>
            <td>
               $ct_training_date
            </td>
            <td>
                $ct_deployment_date
            </td>
            <td>
                $ct_prev_emp
            </td>
        </tr>";
    }
}else{    
    echo "<tr><td><b>Nothing to display</b></td></tr>";
}
$ct\u list=mysqli\u query($conn,“在ct上从ct左连接站中选择*。station\u id=station.station\u id在dilg\u emp.station\u id=station.station\u id,其中dilg\u emp.dilg\u emp\u id=$session\u id”);
如果(mysqli_num_行($ct_列表)>0){
而($ct\u行\u列表=mysqli\u获取\u数组($ct\u列表)){
$ct_FName=$ct_row_list['ct_FName'];
$ct_MName=$ct_row_list['ct_MName'];
$ct_LName=$ct_row_list['ct_LName'];
$ct_SName=$ct_row_list['ct_SName'];
$ct_地址=$ct_行列表['ct_地址];
$ct_birth=$ct_row_list['ct_birth'];
$ct_age=$ct_行_列表['ct_age'];
$ct_性别=$ct_行列表['ct_性别];
$ct_level_educ=$ct_row_list['ct_level_educ'];
$ct_课程=$ct_行列表['ct_课程];
$ct_school=$ct_row_list['ct_school'];
$ct_prev_covid=$ct_row_list['ct_prev_covid'];
$ct_training_date=$ct_row_列表['ct_training_date'];
$ct_部署日期=$ct_行列表['ct_部署日期];
$ct_prev_emp=$ct_row_list['ct_prev_emp'];
回声“
".
$x++。”
$ct\u FName$ct\u MName$ct\u LName$ct\u SName
$ct\U地址
$ct_生日
$ct_年龄
$ct_性别
$ct_level_educ
$ct\U课程
$ct_学校
$ct\U上一个新冠病毒
$ct\u培训\u日期
$ct\u部署\u日期
$ct\u prev\u emp
";
}
}否则{
回应“无需显示”;
}

您可以在行数组上循环,将空值替换为
无数据

$optional_fields = ["ct_SName"];
while ($ct_row_list = mysqli_fetch_array($ct_list)) {
    foreach ($ct_row_list as $name => &$value) {
        if (in_array($name, $optional_fields)) {
            continue;
        } elseif (empty($value)) {
            $value = "No data";
        }
    }
    // rest of your code goes here

很难准确地说出您的意思,如果一行有任何空列,那么跳过该行

如果您在查询中选择了15列,或者您知道
select*
将返回15列,则过滤掉空列,查看是否有15列:

if (mysqli_num_rows($ct_list) > 0) {
    while ($ct_row_list = mysqli_fetch_array($ct_list)) {
        if (count(array_filter($ct_row)) == 15) {
            echo "<tr>
            <td>$x++</td>
            <td>$ct_FName $ct_MName $ct_LName $ct_SName</td>"; //etc...
        }
    }
}
if(mysqli\u num\u行($ct\u列表)>0){
而($ct\u行\u列表=mysqli\u获取\u数组($ct\u列表)){
if(计数(数组过滤器($ct\U行))==15){
回声“
$x++
$ct\u FName$ct\u MName$ct\u LName$ct\u SName“//等等。。。
}
}
}
您还可以检查并跳过:

        if (count(array_filter($ct_row)) < 15) {
            continue;
        }
        //echo your HTML
if(计数(数组过滤器($ct\u行))<15){
继续;
}
//回显您的HTML

什么不起作用?你的意思是如果行中有任何列是空的,那么就不显示行还是什么?谢谢它的工作。如果我要排除一行中的1个字段。试一试$ct\u SName。我将如何做?使用
if
语句跳过该字段。我将把它放在if语句的哪里?我已经将它添加到我的答案中了。