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

fetch_assoc()无数据返回,2017-18会话JSON返回null技术求助

针对特定Session值查询异常的排查与解决

嘿,我来帮你搞定这个头疼的问题!看起来2017-18这个session值总是返回null,甚至fetch_assoc()拿不到数据,而2015-16、2016-17都正常,咱们一步步拆解排查:

1. 先解决SQL注入隐患,同时避免字符串匹配问题

你现在直接把$session拼进SQL语句里,不仅有SQL注入风险,还可能因为字符串转义的问题导致2017-18匹配不到数据库里的记录。比如如果数据库里的存储有特殊字符,或者输入没转义,查询就会失效。

赶紧改成预处理语句,既安全又能规避这类问题:

include "../session-check.php";
include "../../connection/index.php";
$id = $_SESSION['id'];
$session = $_POST['cmbImageSession'];

// 改用预处理语句,避免字符串拼接的坑
$q = "SELECT id, event_name FROM gallery WHERE session=? ORDER BY event_name";
$stmt = $conn->prepare($q);
$stmt->bind_param("s", $session); // "s"表示参数是字符串类型
$stmt->execute();
$result = $stmt->get_result();

2. 先手动验证数据库里的2017-18数据

先打开MySQL客户端(比如phpMyAdmin、Navicat),手动执行这条查询:

SELECT id, event_name FROM gallery WHERE session='2017-18' ORDER BY event_name;
  • 如果这条查询也没返回数据:那问题出在数据库本身,检查2017-18对应的记录是否存在,有没有拼写错误(比如不小心加了空格、全角字符)。
  • 如果有返回数据:那就是PHP代码处理的问题,继续往下查。

3. 给代码加调试,看看fetch_assoc()到底出了啥问题

在代码里加一些调试输出,直观看到查询的执行状态和结果:

// 执行查询后,先检查是否出错
if (!$result) {
    die("查询出错啦: " . $conn->error); // 直接输出MySQL的错误信息,快速定位问题
}

// 看看结果集有多少行
echo "返回的行数: " . $result->num_rows . "<br>";

// 循环拿数据的时候,打印每一行看看
$options = [];
while ($row = $result->fetch_assoc()) {
    $options[] = $row;
    print_r($row); // 把拿到的每一行数据打出来,确认是不是正确获取了
}

// 最后输出JSON前,先看看$options里有没有内容
echo json_encode($options);

这样你就能清楚看到2017-18对应的查询到底有没有拿到数据,以及数据结构对不对。

4. 排查JSON编码的坑

如果数据库里有数据,但JSON返回null,大概率是数据里有无法被JSON编码的字符(比如特殊编码的中文、控制字符)。可以给json_encode加两个参数来处理:

echo json_encode($options, JSON_UNESCAPED_UNICODE | JSON_PARTIAL_OUTPUT_ON_ERROR);

JSON_PARTIAL_OUTPUT_ON_ERROR会在遇到无法编码的字符时跳过错误部分继续输出,而不是直接返回null,帮你定位到底是哪条数据出了问题。

5. 确认前端传的参数是不是干净的

有时候前端传递的cmbImageSession值可能藏着小问题,比如末尾多了个空格,变成了"2017-18 ",自然和数据库里的"2017-18"匹配不上。可以在接收参数时做个清理:

$session = trim($_POST['cmbImageSession']);

把前后的空格都去掉,确保参数和数据库里的存储完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:32:11