从数据库结果中获取字段名称

时间:2011-09-07 09:25:00

标签: php mysql

这里我想从表名中获取字段名,该名称存储在变量$ table中。并希望制作字段名称的表头。我尝试过这种方法有什么问题:

<?php

     $sql=mysql_query("show fields from $table");
     if(mysql_num_rows($sql))
     while($res = mysql_fetch_object($sql))
     {
     ?>
     <th><?php echo $res->field; ?></th>


     <?
      }
      else
      {
      echo "No data to display";
      }



        ?>

4 个答案:

答案 0 :(得分:2)

$printTHs = true;
while($res = mysql_fetch_assoc($sql))
{
    if ($printTHs)
    {
        printTableHeader($res);
        $printTHs= false;
    }

    echo "<tr>";

    foreach($res as $val)
    {
        echo "<td>" . $val . "</td>";
    }

    echo "</tr>";

}

function printTableHeader($res)
{

    echo "<tr>";

    foreach($res as $col => $val)
    {
        echo "<th>" . $col . "</th>";
    }

    echo "</tr>";
}

答案 1 :(得分:0)

查询必须是

$sql=mysql_query("show columns from $table"); 

答案 2 :(得分:0)

使用mysql_fetch_assoc(),然后使用array_keys()获取密钥。这将返回一个包含所有键的数组。

使用foreach()获取表格标题

答案 3 :(得分:0)

不是最佳解决方案,但会这样做:

$results = mysql_query('SELECT * FROM ' . $table);
if (mysql_num_rows($results))
{
    echo '<table>';
    $first = TRUE;

    while ($row = mysql_fetch_assoc($results))
    {
        if ($first = TRUE)
        {
            echo '<tr>';

            foreach ($row as $k => $v)
                echo '<th>' . $k . '</th>';

            echo '</tr>';
            $first = FALSE;
        }

        echo '<tr>';

        foreach ($row as $column)
            echo '<td>' . $column . '</td>';

        echo '</tr>';
    }

    echo '</table>';
}