5

已解决我使用了 alfasin 的答案,但由于这给了我太多信息,我写了一个小脚本来获取字段名称。由于字段名称首先出现,因此非常简单:

  $here = array();
  $SQL = "SHOW COLUMNS FROM User";
    foreach($conn->query($SQL) as $row) {
      $here[] = $row[0];
    }
  echo '<pre>';print_r($here);echo '<pre>';

这给我留下了$here包含列名的新数组,希望这对将来的人有所帮助:)


原始问题:
让我澄清一下,我有一个 mysql 表,我试图从中选择 * ,并将结果显示在 html list 中<ol>。我可以设法抓取行数据就好了,但我一生都无法弄清楚如何抓取表列名,以便分别将它们与行匹配。这是我获取行数据的代码:

//get those results
 $sql = "SELECT DISTINCT *
 FROM User
 WHERE Owner = '".$owner."'";
  foreach($conn->query($sql) as $row) {
  //split array in half
  $hax = count($row);
  $halfHax = $hax / 2;
   //set up a for loop to give results
    $u = 1;
      for($i = 2; $i <= $halfHax; $i++){
        echo $row[$u].'<br>';
        $u++;
      }
   }

这给了我Owner == $owner应该得到的所有结果,但我希望列名与那些一起列出,我可以硬编码出来,但可能会添加/更改更多列,所以我宁愿不这样做。有任何想法吗?

4

3 回答 3

3

获取行作为关联数组,以便将列名保留为数组键。这是我的建议:

$sql = "SELECT DISTINCT * FROM User WHERE Owner = :owner";
$sth = $conn->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':owner' => $owner);

while($row=$sth->fetch(PDO::fetch_assoc) as $row) {
  //split array in half
  $hax = count($row);
  $halfHax = $hax / 2;
  //set up a for loop to give results
  foreach ($row as $key => $value) {
    echo $key.'='.$value.'<br />';
  }

}

仅列出列名:

array_keys($row);
于 2013-02-04T21:41:23.627 回答
3

尝试:

SHOW COLUMNS FROM mytable

http://dev.mysql.com/doc/refman/5.0/en/show-columns.html

于 2013-02-04T21:34:18.533 回答
2

如果您想了解有关列的更多信息,请参阅MySQL 参考中的SHOW COLUMNS 。

但我建议使用mysqli_fetch_assoc然后使用foreach (array_expression as $key => $value)来获取每一行的列名及其值。

于 2013-02-04T21:34:27.613 回答