當前位置: 首頁> 最新文章列表> 如何將mysqli_result 結果中某一列提取成數組?用array_column() 輕鬆搞定

如何將mysqli_result 結果中某一列提取成數組?用array_column() 輕鬆搞定

M66 2025-07-18

在使用PHP 操作MySQL 數據庫時,很多人用mysqli_query執行查詢後,會拿到一個mysqli_result對象。有時候我們只想提取其中某一列的數據,比如所有用戶名、所有ID,放進一個數組裡。這時候手動while循環來收集其實有點囉嗦。其實,PHP 內置的array_column()可以幫你輕鬆搞定。

本文就教你如何用array_column()快速從mysqli_result中提取某一列。

基礎查詢

假設我們有一個用戶表users ,裡面有字段idusername 。我們想取出所有用戶名組成一個數組。

 <?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);
}

此時, $result是一個mysqli_result對象。我們需要把它轉換為數組,才能用array_column()

提取為數組

mysqli_fetch_all()可以把結果集一次性轉成二維數組。注意要用MYSQLI_ASSOC參數,確保拿到的是關聯數組。

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

這時$rows的結構大概是這樣的:

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

現在就可以用array_column()提取username這一列了:

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

$usernames的結果就是:

 ['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();
?>