将所有行回显到表中

时间:2014-04-04 11:02:50

标签: php mysql sql

所以我有一个包含33列的数据库 现在这是我的问题:

    $q3 = "SELECT * FROM qbd";
$r3 = $db1->query($q3);
while ($result = $r3->fetchAll()){
    foreach($result as $row3){
        echo "<tr>";
        echo "<td colspan='2'>Kill ".$row3['ID']."</td>";
        echo "<td>".$row3['Dragon_Bones']."</td>";
        echo "<td>".$row3['Royal_Dragonhide']."</td>";
        echo "</tr>";
    } 

}

如何制作它以便我只需要1 $row3而不需要在其中写下所有列名?

4 个答案:

答案 0 :(得分:2)

您可以使用第二个foreach遍历到数组,如下所示:

while ($result = $r3->fetchAll())
{
    foreach($result as $row3)
    {
        echo "<tr>";
        foreach($row3 as $key=>$val)
        {
            echo $key;
            echo $val;
        }
        echo "</tr>";        
    } 

}

这将显示密钥(列名称)及其中的值。

如果您只想显示值,可以改用:

while ($result = $r3->fetchAll())
{
    foreach($result as $row3)
    {
        echo "<tr>";
        foreach($row3 as $key=>$val)
        {
            echo $val;
        }
        echo "</tr>";        
    } 

}

答案 1 :(得分:2)

您可以尝试fetch()并获取关联,而不是fetchAll。试试这个。

while ($result = $r3->fetch(PDO::FETCH_ASSOC)){

  echo '<tr>';

  foreach($result as $value){

     echo '<td>'.$value.'</td>';
   }
   echo '</tr>';

}

答案 2 :(得分:0)

如果您只是想要输出行的表,并希望第一行上的标题,那么您可以使用mysqli_data_seek()在处理第一行以获取标题后将指针重置回到开头。

这样的事情(假设你可以使用mysqli_fetch_assoc): -

<?php

$q3 = "SELECT * FROM qbd";
$r3 = $db1->query($q3);
if ($result = $r3->fetch_assoc())
{
    echo "<tr>";
    foreach($result as $row3_key=>$row3_value)
    {
        echo "<td>".$row3_key."</td>";
    }
    echo "</tr>";
    $db1->data_seek(0);
    while ($result = $r3->fetch_assoc())
    {
        echo "<tr>";
        foreach($result as $row3_key=>$row3_value)
        {
            echo "<td>".$row3_value."</td>";
        }
        echo "</tr>";
    }
} 

?>

编辑 - 如果你的db类不支持mysqli_data_seek()(或者如果你使用的是无缓冲的查询): -

<?php

$q3 = "SELECT * FROM qbd";
$r3 = $db1->query($q3);
if ($result = $r3->fetch_assoc())
{
    echo "<tr>";
    foreach($result as $row3_key=>$row3_value)
    {
        echo "<td>".$row3_key."</td>";
    }
    echo "</tr>";
    OutputRow($result);
    while ($result = $r3->fetch_assoc())
    {
        OutputRow($result);
    }
} 

function OutputRow($result)
{
    echo "<tr>";
    foreach($result as $row3_key=>$row3_value)
    {
        echo "<td>".$row3_value."</td>";
    }
    echo "</tr>";
}

?>

答案 3 :(得分:0)

$keys = array();
$values = array();

echo '<table>';

while ($result = $r3->fetchAll()){
    foreach($result as $row3){

        foreach($row3 as $key=>$val){
            for($i=1;$i=30;$i++){
                $keys[]=$key;
            }
            $values[] = $val;       
        }   
        echo '<tr>';
        foreach($keys as $k){
            echo $k;
        }            
        foreach($values as $v){
            echo $v;
        }
        echo '</tr>';
    } 
}

echo '</table>'