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

Docker环境下PHP连接MySQL成功但mysqli查询无结果求助

问题分析与解决方案

一、修复SQL语句语法错误

你的查询语句末尾多了一个分号,这会导致MySQL解析失败:

// 错误语句(末尾双分号)
$select_query = "SELECT user_password, user_id, user_email, user_status FROM user_login WHERE user_email = '{$email}';;";

// 修正后
$select_query = "SELECT user_password, user_id, user_email, user_status FROM user_login WHERE user_email = '{$email}';";

二、完善查询结果的错误检查与处理

当前代码仅打印$result变量,无法排查查询失败原因或确认结果集状态。添加错误检查和结果处理逻辑:

$result = mysqli_query($conn, $select_query);
if (!$result) {
    // 打印SQL执行错误信息,快速定位问题
    _log("Query execution failed: " . mysqli_error($conn));
} else {
    $total_rows = mysqli_num_rows($result);
    _log("Total matching records: " . $total_rows);
    
    if ($total_rows > 0) {
        // 获取查询结果
        $user_data = mysqli_fetch_assoc($result);
        _log("Fetched user data: " . json_encode($user_data));
        // 返回JSON响应
        echo json_encode($user_data);
    } else {
        _log("No records found for email: {$email}");
        echo json_encode(["status" => "error", "message" => "No matching user found"]);
    }
}

三、Docker环境中验证数据库数据的其他方法

1. 直接进入MySQL容器执行查询

在终端运行以下命令,直接登录容器内的MySQL执行查询:

# 进入MySQL容器并登录指定数据库
docker exec -it db mysql -u MYSQL_USER -pMYSQL_PASSWORD MYSQL_DATABASE

然后执行SQL语句验证数据:

SELECT user_password, user_id, user_email, user_status FROM user_login WHERE user_email = 'abcde@gmail.com';

2. 通过phpMyAdmin可视化验证

访问http://localhost:8080,使用config.php中的账号密码登录,选择目标数据库后,在SQL控制台执行查询语句,直接确认数据是否存在。

四、关键优化建议

  • 避免SQL注入:当前直接拼接用户输入到SQL语句的方式存在严重安全风险,改用预处理语句:
$stmt = $conn->prepare("SELECT user_password, user_id, user_email, user_status FROM user_login WHERE user_email = ?");
$stmt->bind_param("s", $email); // "s"表示字符串类型参数
$stmt->execute();
$result = $stmt->get_result();
$user_data = $result->fetch_assoc();
  • 配置一致性检查:确保config.php中的MYSQL_USER、MYSQL_PASSWORD、MYSQL_DATABASE与Docker Compose中定义的环境变量完全一致,无拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:40:15