无论返回的列数是多少,都在表中显示PHP查询结果?

时间:2016-11-02 14:45:44

标签: php oci

所以我正在探索PHP的精彩世界,我仍在创建非常肮脏,构建不佳的代码,但我正在努力变得更好!所以我的问题如下:

有没有办法自动计算结果集中的列,并且无论使用何种查询,都会吐出漂亮的HTML表格?

这是当前的代码:

<?php
include '../includes/connect.php';
include '../includes/queries.php';
$stid = oci_parse($conn, $export);
oci_execute($stid);
echo "<table class='pure-table pure-table-striped' style='font-size:11px;'><thead><tr><th>Name</th><th>File Name</th><th>Export Date</th></tr></thead>";
while (oci_fetch($stid)) {
    echo "<tr><td>" . oci_result($stid, 'DISPLAY_NAME') . "</td>";
    echo "<td>" . oci_result($stid, 'LAST_EXPORT_FILE') . "</td>";
    echo "<td>" . oci_result($stid, 'LAST_EXPORT_DATE') . "</td></tr>";
}
echo "</table>\n";
oci_free_statement($stid);
oci_close($conn);

我想每次都使用同一个表,但只需让它自动检测列标题名称和列数,然后将其返回到表中。

是否有可能或有意义?

1 个答案:

答案 0 :(得分:0)

我使用PDO就是这么做的。

$out = '';
$q = $conn->prepare($SQL);
if ($q->execute()) {
    $rows = $q->fetchAll();
    if (!empty($rows)) {
        //We have something
        $out .= "<table class='pure-table pure-table-striped' style='font-size:11px;'>";
        $first = true;
        //iterate on rows
        foreach($rows as $row) {
            //Clean out all the numeric keys - stops duplicate values
            foreach ($row as $key => $value) {
                if (is_int($key)) {
                    unset($row[$key]);
                }
            }

            //header
            if ($first) {
                //write header
                $out .= '<thead><tr>';
                foreach ($row as $key => $value) {
                    $out .= '<th>' . $key . '</th>';
                }
                $out .= '</tr></thead>';
                $first = false;
            }
            //write line
            $out .= '<tr>';
            foreach($row as $key => $value) {
                $out .= '<td>' . $value . '</td>';
            }
            $out .= '</tr>';
        }
        $out .= '</table>';
    }
}
echo ($out);