创建HTML表会产生额外的列

问题描述 投票:0回答:2

我正在尝试拉出一个sql表并转换为html表。

主循环:

function generate_HTMLTable($data){
$tr="";
    foreach ($data as $row) {      
    $td ="";
    for($i=0; $i<count($row);$i++)     
    $td=$td."<td>$row[$i]</td>\n";  
    $tr=$tr."<tr>".$td."</tr>\n";
}
return "\n<table>".$tr."</table>\n";
 }

实际表只有4列和10行,但由于某种原因,它输出8列和10行...

print_r($data)收益率

Array ( 
  [0] => Array ( 
    [Place] => 1 
    [0] => 1 
    [Car] => Chev
    [1] => Chev
    [Color] => Black
  ) 
)
php html output
2个回答
1
投票

输出是正确的。由于您通过查询获取列名和索引,因此您将获得该输出。

而不是fetchAll()你可以这样做:

$data = $dbh->query("SELECT * FROM questiondata")->fetch_assoc();

这只会响应列名称,然后您可以生成正确的表格格式。

你可以在这里阅读更多PHP Mysqli Result Methods

编辑:

执行语句后,请使用此方法获取PDO所需的输出:

$stmt->fetch(PDO::FETCH_ASSOC);

编辑2:

不知道你使用的是Sqlite。

对于Sqlite,您可以这样做:

$data = $dbh->query("SELECT * FROM questiondata")->fetch(SQLITE_ASSOC);

0
投票

您可以使用此代码并编译您的列

function generate_HTMLTable($data){
$table = "<table>";
$table = $table + "<tr><td>ID</td><td>Nom</td> ... </tr>";
foreach ($data as $row) {      
$table = $table + "<tr><td>"+$row['id']+"</td><td>"+$row['nom']+"</td> ... </tr>";
}
$table = $table + "</table>";
return $table;
© www.soinside.com 2019 - 2024. All rights reserved.