PHP数据转JSON遇阻:crud类dataview_new函数无返回结果求助
解决
dataview_new函数无返回值导致JSON解析失败的问题 你的核心问题很明确:crud类的dataview_new函数只完成了查询结果的数组组装,但没有返回这个组装好的数组,所以后续代码根本拿不到数据,自然没法转换成JSON输出。
第一步:修复dataview_new函数
你给出的代码片段里,while循环已经把查询结果塞进了$users数组,但最后遗漏了返回语句。只需要在函数末尾加上return $users;即可:
class crud { private $db; function __construct($DB_con) { $this->db = $DB_con; } public function dataview_new($query) { $stmt = $this->db->prepare($query); $stmt->execute(); $users = array(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ array_push($users, $row); } // 关键:返回组装好的结果数组 return $users; } }
第二步:在apix.php中正确调用并输出JSON
修复函数后,你就可以在apix.php里正常调用它,再转换成JSON格式输出:
// 假设你已经完成数据库连接和crud实例化 $crud = new crud($your_db_connection); $query = "SELECT * FROM your_target_table"; // 替换成你的实际查询语句 $data = $crud->dataview_new($query); // 设置HTTP响应头,告诉客户端返回的是JSON数据 header('Content-Type: application/json'); // 输出JSON格式结果 echo json_encode($data);
额外调试小技巧
- 如果还是没有数据返回,先把
$query拿到数据库客户端(比如phpMyAdmin、Navicat)直接执行,确认查询本身是否能得到结果。 - 给PDO加上错误捕获,方便排查执行问题:
// 在execute后添加错误检查 if (!$stmt->execute()) { print_r($stmt->errorInfo()); exit; } - 如果查询确实没有数据,
json_encode会输出[],这是合法的空数组JSON格式,不属于错误。
内容的提问来源于stack exchange,提问作者user1286956
相关产品推荐
相关产品推荐

