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

PHP使用MySQLi查询仅返回1行,Toad中正常返回全部7行

为什么MySQL查询在PHP页面只返回1行,而Toad里返回多行?

嗨,我一眼就看出问题所在啦!你当前的代码里只调用了一次fetch_assoc()(不管是$result->fetch_assoc()还是mysqli_fetch_assoc($result)),这个方法每次只会从查询结果集中取出一行数据,所以你只能得到第一条记录。而Toad这类数据库工具会自动遍历整个结果集,把所有行都展示出来,这就是两者输出差异的核心原因。

给你两种简单的解决办法,任选其一就行:

方法一:用循环遍历结果集

通过while循环逐行读取结果集里的每一条数据,把它们存入一个数组中:

$db_host = 'myhost'; 
$db_user = 'user'; 
$db_pass = 'pass'; 
$db_name = 'db'; 
$db = mysqli_connect($db_host, $db_user, $db_pass, $db_name); 
$result = $db->query("SELECT `team_name`,`team_score` FROM `scores`");

// 初始化空数组存储所有团队数据
$allTeams = [];
// 循环读取每一行,直到结果集为空
while ($row = $result->fetch_assoc()) {
    $allTeams[] = $row;
}

// 打印完整的团队数据数组
print_r($allTeams);

方法二:一次性取出所有数据

如果你不想写循环,可以用mysqli_fetch_all()直接把整个结果集转换成关联数组:

$db_host = 'myhost'; 
$db_user = 'user'; 
$db_pass = 'pass'; 
$db_name = 'db'; 
$db = mysqli_connect($db_host, $db_user, $db_pass, $db_name); 
$result = $db->query("SELECT `team_name`,`team_score` FROM `scores`");

// 一次性获取所有关联数组格式的行数据
$allTeams = mysqli_fetch_all($result, MYSQLI_ASSOC);

print_r($allTeams);

两种方式都能让你得到全部7条团队数据,选你觉得顺手的用就好~

内容的提问来源于stack exchange,提问作者Aaron Magpantay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:47:53