在php MySql中显示网格中的所有列

时间:2014-07-10 17:50:18

标签: php mysql

我知道在PHP页面中显示MySql中表的值。这就是我的工作:

$sql = "SELECT * FROM  table";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result,MYSQL_NUM))
{
//print the values using echo
}

问题是我使用的表中有35列,而且我有4个这样的表。有没有比回声每列更简单的方法。我还要打印表头。在谷歌尝试了一些链接,没有得到满意的答案。直接回答或链接将有所帮助。提前致谢。

3 个答案:

答案 0 :(得分:0)

如果您想查询查询中表的列名,可以执行以下操作:

$c=0;
$myarray = array();
while ($c < mysql_num_fields($result))
{
     # Get field name
     $fld = mysql_fetch_field($result, $c);

     # Put field name in array
     $myarray[] = $fld->name;

     # Count + 1 for next field
     $c++;
}

echo "<table style='border:1px solid #ccc;'>\n";
echo "<thead>\n";
echo "<tr>\n";
foreach($myarray as $columnheading) {
    echo "<th>".$columnheading."</th>\n";
}
echo "</tr>\n";
echo "</thead>\n";
echo "<tbody>\n";
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        echo "<tr>\n";
        foreach($row as $td) {
            echo "<td>".$td."</td>";
        }
        echo "</tr>\n";
    }
}
echo "</tbody>\n";
echo "</table>";

您在列中包含列名称。添加print_r($ myarray)以查看生成的列。

编辑:添加完整示例。

答案 1 :(得分:0)

根据PHP文档here

$result = mysql_query("SHOW COLUMNS FROM sometable");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
    print_r($row);
}
}

答案 2 :(得分:-1)

您需要的技巧是检索结果集的元数据。我拒绝帮助您对已弃用且危险的mysql_界面做任何事情,所以我的回答与mysqli_有关。

这是文档。

http://php.net/manual/en/mysqli.quickstart.statements.php

以下是您可以使用的一些代码:

$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    die "Failed to connect to MySQL: (" .
        $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$res = $mysqli->query("SELECT * FROM table");

if (!$res) {
    die "Query failed: (" . $res->errno . ") " . $res->error;
}

$rownumber = 0;
echo "<table>\n";
while ($row = $res->fetch_assoc()( {
  if (0 == $rownumber) {
    /* first result set row? look at the keys=column nanes */
    echo "<tr>";
    foreach (array_keys($row) as $colname) {
      echo "<td>$colname</td>"
    }
    echo "</tr>\n";
  }
  $rownumber ++;

  echo "<tr>";
  foreach (array_values($row) as $colval) {
    echo "<td>$colval</td>"
  }
  echo "</tr>\n";
}
echo "</table>\n";
$res->close();

至于减少你称之为“回声”的次数,没有特别好的理由这样做。但是如果你必须你可以做这样的事情来积累输出字符串。

  $out = "";
  $out .= "<tr>";
  foreach (array_values($row) as $colval) {
    $out .= "<td>$colval</td>"
  }
  $out .= "</tr>\n";
  echo $out;
  $out = "";