创建HTML表会产生额外的列

时间:2019-04-29 08:37:49

标签: php html output

我正在尝试提取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
  ) 
)

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;