如何获取mysql表列的名称

时间:2013-02-04 21:31:16

标签: php mysql

分辨 我使用了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列表<ol>中显示结果。我可以设法获取行数据JUST FINE,但我不能为我的生活弄清楚如何获取表列名,以便分别与行匹配。这是我抓取行数据的代码:

//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就像它应该的那样的所有结果,但我希望列名列出那些,我可以硬编码,但可以添加/更改更多列我宁愿不。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

尝试:

SHOW COLUMNS FROM mytable

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

答案 1 :(得分: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);

答案 2 :(得分:2)

如果您想了解有关这些列的更多信息,请参阅MySQL Reference上的显示列

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