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

如何将PHP数据库搜索结果输出到HTML表格并显示多条结果?

解决方法:输出多条匹配结果到HTML表格

你的问题核心有两个:一是当前代码仅获取了单条查询结果(fetch_assoc()默认只返回单行数据),二是未将数组数据转换为HTML表格结构。下面是修改后的完整代码,同时解决这两个问题:

<?php
session_start(); // 必须启动会话才能正常使用$_SESSION变量
$servername = "test";
$username = "test";
$password = "test";
$dbname = "test";
$journal = (isset($_SESSION["journal"])) ? $_SESSION["journal"] : null;

// 连接数据库,无需额外调用mysqli_select_db(connect已指定数据库)
$conn = mysqli_connect($servername, $username, $password, $dbname) or die("connection failed: " . mysqli_connect_error());

if(isset($_POST["form_submit"])) {
    $journal = $_POST["journal"];
    $stmt = $conn->prepare("SELECT * FROM straffesager WHERE journalnummer=?");
    $stmt->bind_param("s", $journal);
    $stmt->execute();
    $val = $stmt->get_result();
    $row_count = $val->num_rows;

    if($row_count > 0) {
        // 初始化HTML表格
        echo "<table border='1' cellpadding='8' cellspacing='0' style='border-collapse: collapse;'>";
        
        // 用第一行数据生成表头
        $first_row = $val->fetch_assoc();
        echo "<tr>";
        foreach($first_row as $column_name => $_) {
            echo "<th>" . htmlspecialchars($column_name) . "</th>";
        }
        echo "</tr>";

        // 输出第一行数据
        echo "<tr>";
        foreach($first_row as $value) {
            echo "<td>" . htmlspecialchars($value) . "</td>";
        }
        echo "</tr>";

        // 循环输出剩余所有匹配结果
        while($row = $val->fetch_assoc()) {
            echo "<tr>";
            foreach($row as $value) {
                echo "<td>" . htmlspecialchars($value) . "</td>";
            }
            echo "</tr>";
        }
        
        echo "</table>";
    } else {
        echo "<br><br>Den indtastede information matcher ikke sager i databasen.";
    }

    $stmt->close();
    $conn->close();
}
?>

关键改动说明:

  • 添加session_start():如果要读取$_SESSION变量,必须在脚本最开头启动会话,否则无法正常获取会话数据。
  • 循环遍历所有结果:替换了原来仅获取单行的逻辑,先用第一行数据生成表头,再通过while循环遍历剩余所有匹配行,确保所有结果都能展示。
  • 安全输出处理:用htmlspecialchars()转义所有输出内容,避免XSS攻击和HTML字符冲突(比如内容包含</>时不会破坏表格结构)。
  • 优化表格样式:添加了border-collapse: collapse让表格边框更美观,同时设置内边距提升可读性。

如果你的前端表单尚未配置,记得确保表单的method="post",且提交按钮的name="form_submit",这样才能触发PHP的查询逻辑。

内容的提问来源于stack exchange,提问作者Steadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:26:01