現在の位置: ホーム> 最新記事一覧> mysqli_resultの列を配列に抽出する方法は? Array_Column()を使用して簡単に解決します

mysqli_resultの列を配列に抽出する方法は? Array_Column()を使用して簡単に解決します

M66 2025-07-18

PHPを使用してMySQLデータベースを操作する場合、 MySqli_Queryを使用してクエリを実行した後、多くの人がMySQLI_RESULTオブジェクトを取得します。すべてのユーザー名やすべてのIDなど、1つの列のデータを抽出し、配列に配置するだけです。現時点では、ループ実際には少し冗長です。実際、PHPの組み込みArray_Column()は、簡単に処理するのに役立ちます。

この記事では、array_column()を使用してmysqli_resultから列をすばやく抽出する方法を教えてください。

基本クエリ

フィールドIDユーザー名を持つユーザーテーブルユーザーがいるとします。すべてのユーザー名を取り出して配列を形成したいと考えています。

 <?php
$mysqli = new mysqli('localhost', 'db_user', 'db_pass', 'db_name');
if ($mysqli->connect_error) {
    die('接続に失敗しました:' . $mysqli->connect_error);
}

$sql = "SELECT id, username FROM users";
$result = $mysqli->query($sql);
if (!$result) {
    die('クエリに失敗しました:' . $mysqli->error);
}

現時点では、 $ resultmysqli_resultオブジェクトです。 array_column()を使用するには、それを配列に変換する必要があります。

配列として抽出します

mysqli_fetch_all()は、結果を一度に2次元配列に変換できます。 Associative Arrayを確実に取得するには、 mysqli_assocパラメーターを使用する必要があることに注意してください。

 $rows = $result->fetch_all(MYSQLI_ASSOC);

この時点で、 $ rowsの構造はほぼこのようなものです。

 [
    ['id' => 1, 'username' => 'alice'],
    ['id' => 2, 'username' => 'bob'],
    ['id' => 3, 'username' => 'charlie']
]

これで、 array_column()を使用して、ユーザー名列を抽出できます。

 $usernames = array_column($rows, 'username');

$ usernameの結果は次のとおりです。

 ['alice', 'bob', 'charlie']

ID列を抽出し、 IDをキーとして使用する場合は、以下を使用します。

 $usernamesById = array_column($rows, 'username', 'id');

このようにして、 $ usernamesbyidは次のとおりです。

 [
    1 => 'alice',
    2 => 'bob',
    3 => 'charlie'
]

完全な例

<?php
$mysqli = new mysqli('localhost', 'db_user', 'db_pass', 'db_name');
if ($mysqli->connect_error) {
    die('接続に失敗しました:' . $mysqli->connect_error);
}

$sql = "SELECT id, username FROM users";
$result = $mysqli->query($sql);
if (!$result) {
    die('クエリに失敗しました:' . $mysqli->error);
}

$rows = $result->fetch_all(MYSQLI_ASSOC);
$usernames = array_column($rows, 'username');

print_r($usernames);

$mysqli->close();
?>