Docker容器环境下PHP访问MySQL执行查询失败问题求助
问题定位
你遇到的问题核心是PHP代码的拼写错误,和GCP环境、Docker配置无关,具体错误点如下:
- 数据库名变量拼写错误
代码第4行定义数据库名时变量名写为$databse(缺失字母a),但第6行数据库连接时传入的是$database,该变量未定义,相当于连接时没有指定目标数据库,自然无法识别库里的表。 - SQL执行函数调用错误
代码第12行执行查询时写为$mysqli_query($conn, $sql),mysqli_query是PHP内置函数,前面多余的$会被识别为可变函数调用,因为对应变量未定义,所以调用失败返回布尔值false,触发后续mysqli_num_rows的参数类型报错。 - 可选配置修正:你的docker-compose中phpMyAdmin服务的
PMA_HOST配置为mysql,但MySQL服务的名称是db,当前能正常访问属于巧合,建议修改为PMA_HOST: db避免后续容器重建后无法连接phpMyAdmin。
修复方案
将db.php代码替换为如下内容:
<?php $servername = "db"; $username = "php"; $password = "php"; $database = "assignment_four_data"; // Create connection $conn = mysqli_connect($servername, $username, $password, $database); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = 'SELECT * FROM Users'; $result = mysqli_query($conn, $sql); if (!$result) { // 排查问题时可以打开下面这行打印具体SQL错误 // echo "SQL错误: " . mysqli_error($conn); printf("false"); } else { printf("Selected returned %d rows. \n", mysqli_num_rows($result)); } ?>
修改完成后执行docker-compose restart myphp重启PHP服务即可恢复正常。
内容的提问来源于stack exchange,提问作者Mully5474
相关产品推荐
相关产品推荐

