返回MYSQL表中所有列字段的名称

时间:2012-09-03 11:39:05

标签: php mysql sql

我想在我的数据库中获取特定表的所有列名。我四处搜索,发现了这个问题:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = 'auto'

所以我写了 PHP 来处理它:

    <?php
    $query  = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = 'auto'";
    $result = mysql_query($query);
    $i = 0;
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "<p>".$row[$i]."</p>";
    $i++;
  }
  ?>

它什么都不返回。我尝试通过删除$i变量来尝试不使用数组索引,但它只返回Array列表作为结果。

有谁知道怎么做?

我也尝试过:

<?php
    $query  = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = 'auto'";
    $result = mysql_query($query);
    $i = 0;
    print_r($result);
  ?>

然后返回Resource id #5。所以它必须是SQL查询。

这完全杀死了这个页面。

3 个答案:

答案 0 :(得分:2)

您正在尝试获取关联的数组 - 而不是数字数组。

while($row = mysql_fetch_array($result))

默认情况下,关联数组是列名称数组。

您还可以从表中获取列详细信息,而无需使用show columns from yourTableName;

来访问信息模式 - 这在mysql中具有糟糕的性能 - 5.1到5.4ish
mysql> show columns from first;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(3)   | YES  |     | NULL    |       |
| title | tinytext | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

答案 1 :(得分:1)

我错过了什么或忘记了SHOW COLUMNS功能吗?

答案 2 :(得分:0)

<?php
 /* The users table consists of three fields:
 *   user_id
 *   username
 *   password.
 */
  $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
   if (!$link) {
      die('Could not connect to MySQL server: ' . mysql_error());
   }
   $dbname = 'mydb';
   $db_selected = mysql_select_db($dbname, $link);
   if (!$db_selected) {
     die("Could not set $dbname: " . mysql_error());
   }
   $res = mysql_query('select * from users', $link);

    echo mysql_field_name($res, 0) . "\n";
    echo mysql_field_name($res, 2);
  ?>

以上示例将输出:

USER_ID 密码