PHP操作SQLite数据库时循环仍仅返回首行数据求助
解决SQLite仅输出单条数据的问题
问题场景
数据库数据:
ID, Name, Points 3, Christian, 50 1, Jannik, 200 2, Lena, 50
PHP代码:
$res = $this->db->query("SELECT * FROM player"); while($row = $res->fetchArray(SQLITE3_ASSOC) ) { echo $row['name']; }
仅输出Jannik,其余两条数据未显示。
解决方案
- 修正字段名大小写
数据库中字段为Name(首字母大写),但代码里用了小写的$row['name']。SQLite在部分配置下会严格区分标识符大小写,导致无法读取Christian和Lena的字段值。修改代码:
$res = $this->db->query("SELECT * FROM player"); while($row = $res->fetchArray(SQLITE3_ASSOC) ) { echo $row['Name']; // 建议添加分隔符方便查看,比如换行:echo $row['Name'] . '<br>'; }
- 改用fetchAll批量获取数据
如果循环读取存在异常,可先一次性获取所有结果再遍历:
$res = $this->db->query("SELECT * FROM player"); $allRows = $res->fetchAll(SQLITE3_ASSOC); foreach($allRows as $row) { echo $row['Name'] . '<br>'; }
- 检查循环是否被提前终止
确认代码中没有隐藏的break、return等语句,这类语句会中断循环,导致仅输出部分数据。
内容的提问来源于stack exchange,提问作者PsKinggood
相关产品推荐
相关产品推荐

