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

PHP操作SQLite转JSON失败:仅生成查询语句而非数据如何解决?

问题原因

你直接对PDO::query()返回的PDOStatement对象执行json_encode(),这个对象本身存储的是查询相关的元数据(比如查询语句),并没有直接包含查询结果的数据,所以生成的JSON只显示了查询语句。

解决方法

需要先从PDOStatement对象中提取出实际的查询结果,再进行JSON编码,具体修改如下:

修改后的PHP代码

<?php 
    $db = new PDO("sqlite:Playerbase.db");
    $stmt = $db->query("SELECT Gamertag FROM player WHERE Highscore = 999");
    // 提取查询结果为关联数组
    $info = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $info_json = json_encode($info);
    file_put_contents("Highscoreliste.json", $info_json);
    // 注意:header跳转前不能有任何输出,原代码中的echo会导致跳转失效,建议移除或调整逻辑
    header("Location: index.html"); 
?>

关键修改说明

  • 使用fetchAll(PDO::FETCH_ASSOC)从PDOStatement对象中获取所有查询结果,返回一个包含所有匹配行的关联数组
  • 对提取后的数组$info执行json_encode(),生成的JSON就会是实际的查询数据

额外注意点

原代码中echo '<script...>'在header()之前,这会导致HTTP头跳转失效(HTTP头必须在任何输出内容之前发送)。如果需要调用Highscoreliste()函数,建议在index.html页面加载JSON文件后再触发该函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:55:17