PHP连接XAMPP数据库表报错:Undefined variable: mysqli_query等问题求助
解决XAMPP中PHP展示MySQL数据表的错误问题
Hey there, let's break down your issues and fix them step by step! The errors you're seeing are mostly from syntax mistakes and mixing outdated PHP database extensions.
先说说你遇到的核心错误原因
Undefined variable: mysqli_query& 函数名错误:你把mysqli_query这个函数当成变量来用了(写成了$mysqli_query),函数调用不需要加$符号,这直接导致了语法报错。- 混用废弃的
mysql扩展:你同时用了mysqli_connect(现代扩展)和mysql_connect(已废弃的旧扩展),这两种扩展不能混用,而且mysql系列函数在新版本PHP里已经被移除了,必须彻底换掉。 - 冗余代码+HTML结构错误:你在页面里重复创建了数据库连接,还有输出表格时的HTML标签写错了,导致结构混乱。
修正后的完整代码
1. 先修正db_connection.php(保留有效连接逻辑)
<?php // 建立mysqli连接,这部分你的原代码是对的,只做少量精简 $link = mysqli_connect('localhost', 'root', '', 'csvdb6'); if (!$link) { echo "Error: Unable to connect to MySQL." . PHP_EOL; echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; exit; } // 可以保留这个测试输出,或者注释掉用于正式环境 // echo "Success: Connected to MySQL and database csvdb6." . PHP_EOL; ?>
2. 然后修正展示页面testing2.php
<?php include_once('db_connection.php'); ?> <!DOCTYPE html> <html> <head> <title>Table with database</title> <style> table { border-collapse: collapse; width: 100%; color: #588c7e; font-family: monospace; font-size: 25px; text-align: left; } th { background-color: #588c7e; color: white; } tr:nth-child(even) {background-color: #f2f2f2} </style> </head> <body> <table> <tr> <th>PMID</th> <th>ResearchGroup</th> <th>Species</th> <th>Method</th> </tr> <?php // 复用db_connection.php里已经建立好的$link连接,不用重复创建 $sql = "SELECT PMID, ResearchGroup, Species, Method FROM pmid"; $result = mysqli_query($link, $sql); // 这里用正确的函数调用,不要加$ // 检查查询结果 if (mysqli_num_rows($result) > 0) { // 循环输出每一行数据 while($row = mysqli_fetch_assoc($result)) { // 修复HTML结构,确保每个列对应表头的位置 echo "<tr> <td>" . $row["PMID"]. "</td> <td>" . $row["ResearchGroup"] . "</td> <td>" . $row["Species"]. "</td> <td>" . $row["Method"]. "</td> </tr>"; } } else { // 空结果时让内容占满整行,更美观 echo "<tr><td colspan='4'>0 results</td></tr>"; } // 关闭数据库连接 mysqli_close($link); ?> </table> </body> </html>
关键修正点说明
- 删掉了原页面里错误的
$result= $mysqli_query($GLOBALS['link'],$query);行,这行不仅语法错误,而且和后面的查询逻辑重复。 - 全程使用
mysqli系列函数,彻底抛弃已经废弃的mysql扩展,避免兼容性问题。 - 复用了
db_connection.php的连接,减少冗余代码。 - 修复了表格输出的HTML结构错误,确保每个数据列和表头一一对应。
把这两个文件替换后,重启XAMPP的Apache服务,再访问页面应该就能正常显示数据表了!
内容的提问来源于stack exchange,提问作者FlexingWater
相关产品推荐
相关产品推荐

