【问题标题】:Obtain column names from MySQL query object (PHP)从 MySQL 查询对象 (PHP) 中获取列名
【发布时间】:2012-01-30 17:32:31
【问题描述】:

目前,我将 MySQL 查询结果存储在对象数组中,其中每个对象代表与查询匹配的行。后来,我运行了两个 foreach 循环来提取结果 - 在下面的示例中,它们被输出为动态生成的 HTML 表格。

我的问题:是否可以从查询结果对象中获取列名?我的目标是能够动态生成我的 HTML 表格目前缺少的表格标题。

谢谢!

$data = array();

$result = db_query("SELECT column1, column2 FROM table");

while ($obj= db_fetch_object($result)) {
    array_push($data, $obj);
}

$ret = "<table>";
foreach ($data as $row) {
   $ret .= "<tr>";
   foreach ($row as $field) {
      $ret .= "<td>$field</td>";
   }
   $ret .= "</tr>";
}
$ret .= "</table>";

return $ret; 

【问题讨论】:

    标签: php mysql drupal-6


    【解决方案1】:

    有检索列名的功能。请查看此链接:

    http://php.net/manual/en/function.mysql-fetch-field.php

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 感谢您的回复。看起来数据库必须使用上述方法查询两次——一次获取行,一次获取列信息。理想情况下,我只想查询数据库一次。
      • 不是真的,你是怎么想到这个的?通过这种方法,您可以从已经运行的查询中获取其他信息...
      • 是的,你是对的 - 我对文档的误解表示歉意。从返回的查询结果对象中提取列信息。实际上,数据库只查询一次即可获得查询结果对象。谢谢!
      【解决方案3】:

      这个问题很老了,但现在用 mysqli_* 可以做到这一点

      //Function to generate a HTML table from a SQL query
      function myTable($obConn,$sql)
      {
          $rsResult = mysqli_query($obConn, $sql) or die(mysqli_error($obConn));
          if(mysqli_num_rows($rsResult)>0)
          {
              //We start with header
              echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\"><tr align=\"center\" bgcolor=\"#CCCCCC\">";
              $i = 0;
              while ($i < mysqli_num_fields($rsResult)){
                 $field = mysqli_fetch_field_direct($rsResult, $i);
                 $fieldName=$field->name;
                 echo "<td><strong>$fieldName</strong></td>";
                 $i = $i + 1;
              }
              echo "</tr>";
      
              //We dump info
              $bolWhite=true;
              while ($row = mysqli_fetch_assoc($rsResult)) {
                  echo $bolWhite ? "<tr bgcolor=\"#CCCCCC\">" : "<tr bgcolor=\"#FFF\">";
                  $bolWhite=!$bolWhite;
                  foreach($row as $data) {
                      echo "<td>$data</td>";
                  }
                  echo "</tr>";
              }
              echo "</table>";
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-06-27
        • 1970-01-01
        • 2011-05-09
        • 2013-08-20
        • 2014-01-08
        • 1970-01-01
        相关资源
        最近更新 更多