PDO动态表列名

时间:2016-12-26 23:12:06

标签: php html-table

我想用PHP创建表。我需要动态获取所有列的名称。

这样的事情:

id  name  username  email
 .   .       .        .
 .   .       .        . 
 .   .       .        .
 .   .       .        .

我的代码是:

$query = "SELECT * FROM user";
$result = $connection -> prepare($query);
$result -> execute();

echo "<table border=1 width=100%>";
echo '<tr>';
foreach ($result -> fetch(PDO::FETCH_OBJ) as $key => $value)
{
    echo "<th>$key</th>";
}
echo '</tr>';
foreach ($result -> fetchAll(PDO::FETCH_OBJ) as $value)
{
    echo '<tr>';
    echo "<td>".$value -> id."</td>";
    echo "<td>".$value-> name."</td>";
    echo "<td>".$value-> username."</td>";
    echo "<td>".$value -> password."</td>";
    echo "<td>".$value -> account."</td>";
    echo '</tr>';
}
    echo '</table>';

但是当我获取所有记录时,我在第二个foreach循环中失去了我的第一个记录。 实际上我的第一个记录是第一个foreach循环中的$value。我想在第二个foreach循环中设置TD标签。

1 个答案:

答案 0 :(得分:1)

尝试缓存结果。

您遇到的问题是$query = "SELECT * FROM user"; $result = $connection -> prepare($query); $result -> execute(); // store results in memory $headers = '<tr>'; $output = '<tr>'; foreach( $result->fetch(PDO::FETCH_OBJ) as $key=>$value ) { $headers .= '<th>' . $key . '</th>'; $output .= '<td>' . $value . '</td>'; } $headers .= '</tr>'; $output .= '</tr>'; foreach ($result -> fetchAll(PDO::FETCH_OBJ) as $value) { $output .= '<tr>' . '<td>' . $value->id . '</td>' . '<td>' . $value->name . '</td>' . '<td>' . $value->username . '</td>' . '<td>' . $value->password . '</td>' . '<td>' . $value->account . '</td>' . '</tr>'; } $output = '<table border="1" width="100%">' . $output . '</table>'; // output result set (full table) echo $output; 并不只是抓住桌子上的钥匙 - 它会抓住第一行和钥匙。

以下代码适合您:

echo

以上示例获取所有结果集并动态构建表。由于它存储到内存中,因此它还具有在每个部分html元素上比{{1}}处理更快的优势。一旦完成单个回波构建,它就会输出表格。