如何将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
相关产品推荐
相关产品推荐

