web-dev-qa-db-ja.com

PHP MySQLiで列名を取得するにはどうすればよいですか?

PHPとMySQLiを使用して、テーブルの列名を取得し、そのクエリの結果を配列に入れるにはどうすればよいですか?

5
benj rei

次のコードは、テーブルtable_nameからすべての列名を取得します。

$mysqli = new mysqli('localhost', 'USERNAME_HERE', 'PASSWORD_HERE', 'DATABASE_HERE');

$sql = 'SHOW COLUMNS FROM table_name';
$res = $mysqli->query($sql);

while($row = $res->fetch_assoc()){
    $columns[] = $row['Field'];
}

テーブルに列idnameがあるので、次の結果になります。

Array
(
    [0] => id
    [1] => name
)

結果セットから列を取得する場合は異なりますが、これを行う1つの方法は次のとおりです。

$mysqli = new mysqli('localhost', 'USERNAME_HERE', 'PASSWORD_HERE', 'DATABASE_HERE');

$sql = 'SELECT * FROM table_name';
$res = $mysqli->query($sql);

$values = $res->fetch_all(MYSQLI_ASSOC);
$columns = array();

if(!empty($values)){
    $columns = array_keys($values[0]);
}

$columnsの結果の例:

Array
(
    [0] => id
    [1] => name
)

$valuesの結果の例:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Name 1
        )

    [1] => Array
        (
            [id] => 2
            [name] => Name 2
        )

)
11
FirstOne

Array_keys()を使用して、配列のすべてのキーを取得できます。

$myarray = array('key1' => 'a', 'key2' => 'b')
$x = array_keys($myarray);

必要な結果は$ xから取得できます

$x = array(0 => 'key1', 1 => 'key2');

テーブルの列名を取得するには、

$sql = "SELECT * FROM table_name LIMIT 1";
$ref = $result->query($sql);
$row = mysqli_fetch_assoc($ref);
$x = array_keys($row);

$ x配列にテーブルの列名が含まれるようになりました

4
jophab