PHP远程连接数据库并展示数据失败:页面空白求助
排查步骤及修复建议
1. 先开启PHP错误显示,定位根本问题
空白页多数是因为PHP报错但被系统屏蔽了,在代码最顶部加上这两行,强制显示所有错误:
error_reporting(E_ALL); ini_set('display_errors', 1);
刷新页面后就能看到具体错误信息,比如连接失败、SQL语法错误等。
2. 检查数据库远程连接权限
你用的是远程IP(192.168.56.1)连接,需要确认两个关键点:
- 目标MySQL服务器的配置文件(my.cnf/my.ini)里,
bind-address是否设为0.0.0.0(允许所有IP访问),而不是默认的127.0.0.1(仅本地访问),修改后要重启MySQL服务。 - 数据库用户
root是否拥有远程访问权限,默认root只能本地登录,需要在数据库服务器上执行授权命令:
GRANT ALL PRIVILEGES ON grh.* TO 'root'@'%' IDENTIFIED BY ''; FLUSH PRIVILEGES;
(注:%代表允许所有IP,若只想限制特定IP,把%换成你的客户端IP即可)
3. 增加SQL查询的错误判断
当前代码如果SQL查询失败(比如表名拼写错误),$result会返回false,调用$result->num_rows会直接报错导致页面空白,要先判断查询是否成功:
$sql = "SELECT * FROM ip_patient_logs"; $result = $conn->query($sql); // 新增查询失败判断 if (!$result) { die("SQL查询失败: " . $conn->error); } $rows = array();
4. 改成HTML格式展示数据(匹配你的需求)
你原本想在HTML里展示数据,但当前代码输出的是JSON格式,直接访问可能显示纯字符串或因解析问题看起来空白。可以改成生成HTML表格:
if ($result->num_rows > 0) { echo "<table border='1'>"; // 输出表头 $firstRow = mysqli_fetch_assoc($result); echo "<tr>"; foreach ($firstRow as $key => $value) { echo "<th>$key</th>"; } echo "</tr>"; // 输出第一行数据 echo "<tr>"; foreach ($firstRow as $value) { echo "<td>$value</td>"; } echo "</tr>"; // 输出剩余行数据 while($r = mysqli_fetch_assoc($result)) { echo "<tr>"; foreach ($r as $value) { echo "<td>$value</td>"; } echo "</tr>"; } echo "</table>"; } else { echo "0 results"; }
最后补充检查
- 确认远程服务器的3306端口是否开放(防火墙/安全组要允许该端口的入站请求)
- 确认数据库密码是否正确(你当前密码为空字符串,要和服务器上的root密码完全一致)
内容的提问来源于stack exchange,提问作者ss2022
相关产品推荐
相关产品推荐

