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

