【问题标题】:Creating HTML table results in extra columns创建 HTML 表格会产生额外的列
【发布时间】:2019-04-29 08:37:49
【问题描述】:

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

【问题讨论】:

  • print_r($data) 并向我们展示结果
  • 这里有一个数组,每个列的值保存两次——一次在列名下,一次在数字索引下。这是你如何获取数据库结果的问题,所以去那个地方看看。
  • 这是我的选择语句 $data = $dbh->query("SELECT * FROM questiondata")->fetchAll();可能与 fetchAll() 有关吗?

标签: php html output


【解决方案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);

【讨论】:

  • 返回错误:PHP 致命错误:未捕获错误:调用未定义方法 PDOStatement::fetch_assoc()
  • @SirN00b 更新了!
【解决方案2】:

您可以使用此代码并完成您的列

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;

【讨论】:

  • 你必须填写你的列名并且不要忘记在查询中使用fetch_assoc
猜你喜欢
  • 1970-01-01
  • 2019-06-27
  • 2012-03-20
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 2014-03-16
相关资源
最近更新 更多