如何用PHP显示MySQL数据表?代码无报错但无法展示求协助
问题排查与修复方案
你的代码存在几个关键问题,导致数据无法正常显示,以下是逐一修正说明:
1. 数据库连接未指定目标数据库
使用new mysqli()创建连接时,缺少第四个参数(要操作的数据库名称)。服务器连接成功后并未选中目标数据库,后续查询会找不到对应的数据表。
2. SQL语句存在语法错误
SELECT Exercise_Name, Muscle_Name, PPS, FROM gym_exercises中,PPS后面多了一个逗号,这会直接导致SQL执行失败。
3. 数据库连接变量名不统一
你用$conn创建了连接对象,但后续查询(mysqli_query($link, $sql))和关闭连接(mysqli_close($link))时用的是$link,变量名不匹配,系统无法找到有效的连接资源。
4. HTML表格标签不完整
仅输出echo "Table",缺少表格起始标签<table>,即使查询成功,表格结构也不完整,无法正常渲染。
5. 错误提示缺失具体信息
SQL执行失败时仅输出ERROR:,没有打印具体错误信息,不利于排查问题。
修正后的完整代码
<?php $servername = "sql306.iceiy.com"; $username = "icei_32733650"; $password = "ZoD473049gais"; $dbname = "你的数据库名称"; // 替换为实际数据库名,通常格式为「用户名_数据库名」,可在主机后台查看 // 创建连接并指定数据库 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功!<br>"; // 修正SQL语句,移除多余逗号 $sql = "SELECT Exercise_Name, Muscle_Name, PPS FROM gym_exercises"; if($result = mysqli_query($conn, $sql)){ // 使用正确的连接变量$conn if(mysqli_num_rows($result) > 0){ echo "<table border='1'>"; // 添加表格起始标签,border参数用于显示边框(可选) echo "<tr>"; echo "<th>Exercise_Name</th>"; echo "<th>Muscle_Name</th>"; echo "<th>PPS</th>"; echo "</tr>"; while($row = mysqli_fetch_array($result)){ echo "<tr>"; echo "<td>" . $row['Exercise_Name'] . "</td>"; echo "<td>" . $row['Muscle_Name'] . "</td>"; echo "<td>" . $row['PPS'] . "</td>"; echo "</tr>"; } echo "</table>"; // 释放结果集 mysqli_free_result($result); } else{ echo "未找到匹配的记录。"; } } else{ echo "错误: " . mysqli_error($conn); // 输出具体错误信息 } // 关闭连接,使用正确变量$conn mysqli_close($conn); ?>
额外提示
- 务必替换代码中的
$dbname为实际数据库名称,虚拟主机后台一般会显示该信息,常见格式如icei_32733650_gym。 - 开发阶段可开启PHP错误提示辅助排查,在代码开头添加:
error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者ethan_davids
相关产品推荐
相关产品推荐

