0

SELECT クエリを実行したいのですが、選択する列の数がわかりません。

お気に入り:

select name, family from persons;

選択する列を知るにはどうすればよいですか?

「私は現在、ユーザーによる実行クエリ用のサイトを設計しています。したがって、ユーザーがこのクエリを実行するとき、どの列が選択されているかわかりません。しかし、結果を表示してユーザーにテーブルを描画したいときは、どの列が選択されているかを知る必要があります。列が選択されました。」

4

6 に答える 6

4

不明なクエリ フィールドの場合は、このコードを使用できます。

すべての行フィールド name=>data を提供します。キーを変更して''、データベース内の列の順序に従って num で順序付けられた配列列を取得することもできます。

$data = array();
while($row = mysql_fetch_assoc($query))
{
    foreach($row as $key => $value) {
        $data[$row['id']][$key] = $value;
    }
}
print_r($data);
于 2013-09-22T23:08:16.370 に答える
1

まず、取得するデータを正確に理解します。次に、データベーススキーマを調べて、データベースに含まれるテーブルと、テーブルに含まれる列を確認します。

次のクエリは、データベース内のすべてのテーブルのすべての列の結果セットを返します。

SELECT table_name, column_name
FROM INFORMATION_SCHEMA.COLUMNS;

このsqlfiddleでは、次の結果セットが返されます(簡潔にするためにここでは切り捨てられています)。

TABLE_NAME  COLUMN_NAME
-----------------------
CHARACTER_SETS  CHARACTER_SET_NAME
CHARACTER_SETS  DEFAULT_COLLATE_NAME
CHARACTER_SETS  DESCRIPTION
CHARACTER_SETS  MAXLEN
COLLATIONS  COLLATION_NAME
COLLATIONS  CHARACTER_SET_NAME
COLLATIONS  ID
COLLATIONS  IS_DEFAULT
COLLATIONS  IS_COMPILED
COLLATIONS  SORTLEN

これで、次のようにテーブルCHARACTER_SETSから列CHARACTER_SET_NAMEを選択できることがわかりました。

SELECT CHARACTER_SET_NAME
FROM CHARACTER_SETS;

mysqli::queryこれらのクエリを実行するために使用します。

于 2012-07-07T22:15:11.083 に答える
1

あなたが何を求めているのか理解できれば、結果セットに対して MySQLIi と fetch_fields メソッドを使用することをお勧めします。

http://us3.php.net/manual/en/mysqli-result.fetch-fields.php

そのページの例を参照してください。

于 2012-07-08T23:23:29.963 に答える
1

すべての場合にクエリの列名を取得したい場合は、それほど簡単ではありません。

少なくとも 1 つの行が返される場合、この行から直接列を取得できます。

しかし、テーブルを表示/CSVにエクスポートする結果がないときに列名を取得したい場合は、100%信頼できないPDO関数を使用する必要があります。

// sample query - it might contain joins etc.
$query = 'select person.name, person.family, user.id from persons LEFT JOIN users ON persons.id = user.person_id';

$statement = $pdo->query($query);
$data = $statement->fetchAll(PDO::FETCH_CLASS);
if (isset($data[0])) {
  // there is at least one row - we can grab columns from it
  $columns = array_keys((array)$data[0]);
}
else {
   // there are no results - no need to use PDO functions
   $nr = $statement->columnCount();
   for ($i = 0; $i < $nr; ++$i) {
      $columns[] = $statement->getColumnMeta($i)['name'];
   }
}
于 2015-11-16T17:39:40.130 に答える
0

使用DESC tableまたは

SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='your_table';

出力

 column1,column2,column3
于 2012-07-07T22:13:16.603 に答える
0

次のクエリを使用mysql_query()して実行します。

 SHOW COLUMNS FROM table 

例:

<?php
 $result = mysql_query("SHOW COLUMNS FROM sometable");
 if (!$result) {
  echo 'Could not run query: ' . mysql_error();
  exit;
 }
 if (mysql_num_rows($result) > 0) {
  while ($row = mysql_fetch_assoc($result)) {
    print_r($row);
  }
 }
 ?>
于 2012-07-07T22:08:57.243 に答える