【问题标题】:PDO dynamic Table column name [duplicate]PDO 动态表列名 [重复]
【发布时间】:2016-12-28 19:06:21
【问题描述】:

我想用 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 标记中设置它。

【问题讨论】:

    标签: php html-table


    【解决方案1】:

    尝试缓存结果。

    您遇到的问题是 -&gt;fetch 不只是抓住桌子的钥匙 - 它抓住了第一行和钥匙。

    以下代码应该适合您:

    $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;
    

    上面的示例获取所有结果集并动态构建表。由于它存储到内存中,因此这还具有处理速度比每个部分 html 元素上的 echo 快得多的优势。完成构建后,它会在单个回显中输出表格。

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 2013-05-28
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多