PHP & sqlsrv:将格式化的查询行回显到 table

PHP & sqlsrv: Echo formatted query rows to table

我正在尝试使用 PHP 和 MS SQL 将查询中的数据写入 HTML table。我可以成功地将文本、整数和浮点字段的数据写入table。但是,当我尝试格式化日期列时,整个过程似乎中断了。

    <?php           
echo "<table id='stakeholderTable' class='display nowrap'>
     <thead>
        <tr>";
            foreach ($array as $colmn) {
                echo '<th><strong>' . $colmn . '</strong></th>';
            }
        echo "</tr>
    </thead>";

    echo '<tbody>';
        $sel_result = sqlsrv_query($con,$query);
        while($sel_row = sqlsrv_fetch_array($sel_result)) {
            echo '<tr>';
                foreach ($array as $colmn) {
                    $colmn2 = str_replace("'", "", $colmn);
                    $joe = str_replace("tbl_actor.", "", $colmn2);
                    $joe = str_replace("tbl_commitment.", "", $joe);
                    if($joe == 'com_date' || $joe == 'com_due') {
                        echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
                    }else{
                        echo '<td>' . $sel_row[$joe] . '</td>';
                    }
                }
            echo '</tr>';
        }
    echo '</tbody>'; 
echo '</table>';
?>

只要值不是日期(com_date 或 com_due),上面的代码就可以工作。如果值为日期,table 的第一行将以正确的格式打印,但不会打印后续行并且页面的 Javascript 停止工作。

问题似乎出在以下行:

echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';

但我不知道它有什么问题。

如有任何帮助,我们将不胜感激

干杯,

日期可能已经是 php 中的字符串对象,因此您必须创建日期对象,然后对其进行格式化。 PS 我会把它留作评论,但我没有足够的声誉。

好的。弄清楚了。我在空单元格上调用一个方法。我必须在 运行 代码之前检查空值。

变化:

foreach ($array as $colmn) {
    $colmn2 = str_replace("'", "", $colmn);
    $joe = str_replace("tbl_actor.", "", $colmn2);
    $joe = str_replace("tbl_commitment.", "", $joe);
    if($joe == 'com_date' || $joe == 'com_due') {
        echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
    }else{
        echo '<td>' . $sel_row[$joe] . '</td>';
    }
}

收件人:

foreach ($array as $colmn) {
    $colmn2 = str_replace("'", "", $colmn);
    $joe = str_replace("tbl_actor.", "", $colmn2);
    $joe = str_replace("tbl_commitment.", "", $joe);
    if($joe == 'com_date' || $joe == 'com_due') {
        if(!empty($sel_row[$joe])){
            echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
        }else{
            echo '<td>' . $sel_row[$joe] . '</td>';
        }
    }else{
        echo '<td>' . $sel_row[$joe] . '</td>';
    }
}