格式化fetchAll()的结果

时间:2016-12-09 01:27:21

标签: php pdo

我在sql语句中使用fetchAll(PDO :: FETCH_ASSOC)来查询我创建的数据库,并且当前有print_r()作为查看它的方法。 Print_r返回诸如

之类的值
Array ( [0] => Array ( [Type] => Poison, Invicibility, Heals [First_Name] => Acton [Last_Name] => Mooney ) 
        [1] => Array ( [Type] => Telepathy, Mind-Control [First_Name] => Adam [Last_Name] => Warlock ) 

我正在尝试使用循环将此信息放在表格中以使其变得漂亮和整洁,例如我想看到:

         Type                          First_Name    Last_Name
Poison, Invicibility, Heals              Acton         Mooney
Telepathy, Mind-Control                  Adam          Warlock

但是我目前仍然坚持如何实现这一点。我知道它涉及某种类型的循环,但查询是动态的,有时可能有超过3行的信息,所以它有点混乱。

2 个答案:

答案 0 :(得分:1)

在读取结果时使用while循环,而不是使用fetchAll();

// Use fetchAll as you have
$aResults = $stmnt->fetchAll(PDO::FETCH_ASSOC)

// Then, check you have results
$numResults = count($aResults);
if (count($numResults) > 0) {
    // Output the table header
    echo '<table><tr>';
    foreach ($aResults[0] as $fieldName=>$value) {
        echo '<th>' . htmlspecialchars($fieldName) . '</th>';
    }
    echo '</tr>';

    // Now output all the results
    foreach($aResults as $row) {
        echo '<tr>';
        foreach ($row as $fieldName=>$value) {
            echo '<td>' . htmlspecialchars($value) . '</td>';
        }
        echo '</tr>';
    }

    // Close the table
    echo '</table>';
} else {
    echo 'No results';
}

编辑:基于问题的澄清&#34;我的问题是如何知道列号和名称,因为我的查询工作方式是它可以查询任何表格&#34;

docker inspect exampleimagelocal

答案 1 :(得分:0)

喜欢这个,

<?php 

$arr = array ( 0 => array ( 'Type' => 'Poison, Invicibility, Heals', 'First_Name' => 'Acton', 'Last_Name' => 'Mooney' ) ,
        1 => array ( 'Type' => 'Telepathy, Mind-Control', 'First_Name' => 'Adam', 'Last_Name' => 'Warlock' )) ;

echo "<table><tr><th>type</th><th>type</th><th>type</th></tr>";

foreach ($arr as $key=>$val) {
    echo "<tr>";
    echo "<td>".$val['Type']."</td>";
    echo "<td>".$val['First_Name']."</td>";
    echo "<td>".$val['Last_Name']."</td>";
    echo "</tr>";
}        
echo "</table>";