You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP从数据库表获取并展示全量数据?数组展示代码故障求助

解决PHP从数据库获取并展示数据的问题,以及数组展示的错误

Hey Peter,我帮你梳理下你遇到的两个核心问题:从数据库表获取所有数据并展示,还有数组展示失败的问题。先看看你代码里的几个关键错误,然后一步步修正:

一、代码里的关键问题分析

你的代码有几处语法和SQL的问题,导致数据没法正常展示:

  1. SQL字段名的语法错误
    你SQL语句里的Date of birth是带空格的字段名,MySQL里这种字段必须用**反引号(`)**包裹,不然会被当成语法错误。正确的SQL应该写成:

    SELECT ID, Name, Role, Responsibilities, Age, `Date of birth`, Email FROM person
    
  2. echo语句的拼接错误
    在while循环的echo里,最后一段$row["Email"]."Email" "<br>"少了连接符.,直接写两个字符串会报语法错。我帮你调整了输出格式,让内容更清晰。

  3. 数据库连接关闭的错误
    $mysqli->close得写成$mysqli->close();,因为close是方法调用,必须加括号才能执行。

  4. 对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:46:34