0

データベース内の特定のテーブルのすべての列名を取得したかったのです。私は周りを検索し、このクエリを見つけました:

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 クエリである必要があります。

そして、それはページを完全に殺しました。

4

3 に答える 3

2

数値配列ではなく、関連する配列を取得しようとしています。

while($row = mysql_fetch_array($result))

関連する配列は、デフォルトでは列名の配列です。

また、情報スキーマにアクセスせずにテーブルから列の詳細を取得することもできます。show columns from yourTableName;

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)
于 2012-09-03T11:40:16.623 に答える
1

何か足りないのでしょうか、それともSHOW COLUMNS関数を忘れてしまったのでしょうか?

于 2012-09-03T11:46:37.717 に答える
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 パスワード

于 2012-09-03T11:43:38.623 に答える