如何用PHP从数据库表获取并展示全量数据?数组展示代码故障求助
解决PHP从数据库获取并展示数据的问题,以及数组展示的错误
Hey Peter,我帮你梳理下你遇到的两个核心问题:从数据库表获取所有数据并展示,还有数组展示失败的问题。先看看你代码里的几个关键错误,然后一步步修正:
一、代码里的关键问题分析
你的代码有几处语法和SQL的问题,导致数据没法正常展示:
SQL字段名的语法错误
你SQL语句里的Date of birth是带空格的字段名,MySQL里这种字段必须用**反引号(`)**包裹,不然会被当成语法错误。正确的SQL应该写成:SELECT ID, Name, Role, Responsibilities, Age, `Date of birth`, Email FROM personecho语句的拼接错误
在while循环的echo里,最后一段$row["Email"]."Email" "<br>"少了连接符.,直接写两个字符串会报语法错。我帮你调整了输出格式,让内容更清晰。数据库连接关闭的错误
$mysqli->close得写成$mysqli->close();,因为close是方法调用,必须加括号才能执行。对num_rows的误解
你说用num_rows输出数组,但num_rows只是返回结果集的行数,不是数组本身哦。要是想查看数组内容,得用print_r($row)或者var_dump($row)来打印每一行的数组数据。
二、修正后的完整可运行代码
下面是修正后的代码,我还优化了输出格式,让展示的内容更易读:
<?php // 数据库连接参数 $host = "localhost"; $username = "root"; $password = ''; $database = "pd00255_coursework2_com1025"; // 创建连接实例 $mysqli = new mysqli($host, $username, $password, $database); // 检查连接是否成功 if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; exit; // 连接失败直接终止脚本,避免后续错误 } echo $mysqli->host_info . "<br><br>"; // 修正后的SQL语句,带空格的字段用反引号包裹 $sql = "SELECT ID, Name, Role, Responsibilities, Age, `Date of birth`, Email FROM person"; $result = $mysqli->query($sql); // 检查SQL查询是否成功(比如表不存在、字段名错误等情况) if (!$result) { echo "SQL Query Error: " . $mysqli->error; $mysqli->close(); exit; } if ($result->num_rows > 0) { // 循环输出每一行数据 while($row = $result->fetch_assoc()) { // 优化输出格式,每条数据单独一行,加分割线区分 echo "ID: " . $row["ID"] . "<br>"; echo "Name: " . $row["Name"] . "<br>"; echo "Role: " . $row["Role"] . "<br>"; echo "Responsibilities: " . $row["Responsibilities"] . "<br>"; echo "Age: " . $row["Age"] . "<br>"; echo "Date of birth: " . $row["Date of birth"] . "<br>"; echo "Email: " . $row["Email"] . "<br><hr>"; // 如果你想查看每一行的数组结构,可以取消下面两行注释 // echo "当前行数组内容:"; // print_r($row); // echo "<br>"; } } else { echo "0 results"; } // 正确关闭数据库连接 $mysqli->close(); ?>
三、关于数组展示的说明
如果你想展示从数据库获取的所有数组数据(比如把所有行存到一个大数组里),可以这么做:
// 定义一个空数组存储所有数据 $allPersonData = []; while($row = $result->fetch_assoc()) { $allPersonData[] = $row; } // 打印整个大数组 print_r($allPersonData);
这样就能看到所有从person表获取的数组数据了,用print_r会以可读性较好的格式输出,var_dump还能显示每个元素的数据类型,根据你的需求选就行。
内容的提问来源于stack exchange,提问作者Peter Djon
相关产品推荐
相关产品推荐

