当前位置: 首页> 最新文章列表> 如何将 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();
?>