PHPとMySQLiを使用して、テーブルの列名を取得し、そのクエリの結果を配列に入れるにはどうすればよいですか?
次のコードは、テーブル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'];
}
テーブルに列id
とname
があるので、次の結果になります。
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
)
)
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配列にテーブルの列名が含まれるようになりました