You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SQL表所有行检索到数组?及查询仅返回第一行问题排查

嘿,我来帮你搞定这两个MySQL+PHP的问题哈~

问题1:如何将SQL表中的所有行检索到数组中?

要把表中所有行都放进数组里,关键是要遍历查询返回的结果集——因为mysqli_fetch_assoc()这类函数每次只能获取一行数据。这里有两种常用方法:

  • 方法一:用while循环逐行收集
    这种方法兼容性好,适合所有PHP版本:

    // 替换成你的目标表名
    $query = "SELECT * FROM your_table";
    $result = mysqli_query($con, $query);
    
    $all_rows = [];
    // 循环遍历每一行,直到结果集为空
    while ($row = mysqli_fetch_assoc($result)) {
        $all_rows[] = $row;
    }
    
    // 打印最终的全量数据数组
    print_r($all_rows);
    
  • 方法二:用mysqli_fetch_all()一次性获取
    这个函数可以直接把整个结果集转成数组,不过需要PHP 5.3及以上版本支持:

    $query = "SELECT * FROM your_table";
    $result = mysqli_query($con, $query);
    
    // MYSQLI_ASSOC参数指定返回以字段名为键的关联数组
    $all_rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
    
    print_r($all_rows);
    
问题2:DISTINCT查询仅返回第一行的问题

你遇到的问题很明确:mysqli_fetch_assoc($crun)只会从结果集中取出第一行数据,所以你只看到了一条结果。要拿到所有4条distinct的coName,得把所有行都收集起来才行。

给你修改后的代码,顺便纠正了你变量名的拼写错误(arrey应该是array):

$coquery = "SELECT DISTINCT coName FROM avgcarcompany";
$crun = mysqli_query($con, $coquery);

$array = [];
// 循环遍历每一行,把coName存入数组
while ($row = mysqli_fetch_assoc($crun)) {
    // 如果只需要coName的纯值,就用下面这行
    $array[] = $row['coName'];
    // 如果需要保留每行的关联数组结构,就用$array[] = $row;
}

print_r($array);

如果想用更简洁的写法,也可以用mysqli_fetch_all():

$coquery = "SELECT DISTINCT coName FROM avgcarcompany";
$crun = mysqli_query($con, $coquery);

$array = mysqli_fetch_all($crun, MYSQLI_ASSOC);
print_r($array);

这样就能输出你预期的全部4条数据啦~

内容的提问来源于stack exchange,提问作者Collins Johnathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:17:52