PHP加载SQL表至HTML页面报错:mysql_fetch_array函数未定义求助
解决PHP中“Uncaught Error: Call to undefined function mysql_fetch_array()”的问题
嘿,我来帮你搞定这个头疼的错误!咱们先拆解一下问题根源:
错误原因
mysql_fetch_array()是旧版MySQL扩展的函数,早在PHP 5.5就被官方废弃,PHP 7及以后的版本直接移除了这个扩展。而你现在用的是mysqli扩展(面向对象的new mysqli()方式),这俩扩展完全不兼容,所以才会触发“函数未定义”的致命错误。
解决方案:用mysqli对应的方法替代
既然用了mysqli的面向对象连接,就得用mysqli的结果集方法来获取数据,主要有两种写法:
1. 面向对象风格(推荐,和你的连接方式更统一)
用$result->fetch_array()替代mysql_fetch_array(),同时补全你没写完的代码逻辑:
<?php include ("ConnDetails.php"); $conn = new mysqli($servername, $username, $password, $dbname); // 检查数据库连接是否成功 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // 替换成你实际的SQL查询语句,比如查询某个表的所有数据 $sql = "SELECT * FROM your_actual_table_name"; $result = $conn->query($sql); // 处理查询结果并输出到HTML页面 if ($result->num_rows > 0) { // 先输出一个HTML表格的框架 echo "<table border='1' cellpadding='8' cellspacing='0'>"; // 先获取表头字段名并输出 $headerFields = $result->fetch_fields(); echo "<tr style='background-color: #f0f0f0;'>"; foreach ($headerFields as $field) { echo "<th>" . $field->name . "</th>"; } echo "</tr>"; // 循环读取每一行数据并输出到表格行 while ($row = $result->fetch_array()) { echo "<tr>"; // 遍历当前行的所有字段值(跳过数字索引,只取关联键值) foreach ($row as $key => $value) { if (!is_numeric($key)) { echo "<td>" . htmlspecialchars($value) . "</td>"; } } echo "</tr>"; } echo "</table>"; } else { echo "<p>没有查询到任何数据</p>"; } // 记得关闭数据库连接 $conn->close(); ?>
2. 过程式风格(如果你习惯这种写法)
也可以用mysqli_fetch_array($result),但要注意传入的结果集参数是mysqli查询返回的对象:
// 替代上面的while循环部分 while ($row = mysqli_fetch_array($result)) { // 同样的输出逻辑... }
额外提示
- 确保
ConnDetails.php里的$servername、$username、$password、$dbname这四个变量是正确的数据库连接信息; - 把代码里的
your_actual_table_name替换成你要查询的真实表名; - 用
htmlspecialchars($value)是为了防止XSS攻击,把特殊字符转义后再输出到页面更安全; - 如果要实现页面初始化自动加载,直接把这段PHP代码放到HTML页面的对应位置(比如
<body>标签内)即可,访问页面时会自动执行查询并显示表格。
内容的提问来源于stack exchange,提问作者imtryinggtoohard
相关产品推荐
相关产品推荐

