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

如何通过form标签将数据库数据传递至其他PHP页面?代码问题求助

解决表单传递数据库数据的问题

我来帮你搞定这个问题,你的代码里有几个明显的结构和语法错误,导致数据没法正常传递,咱们一步步梳理并修正:

先说说你的代码里的核心问题:

  • 你把<form>和<select>放在了while循环内部,这会循环生成多个表单和下拉框,结构完全混乱——正确的做法应该是一个表单包裹一个下拉框,然后在下拉框里循环生成<option>选项。
  • action属性里的变量没有输出,而且语法错误:你没写echo来输出$row['model'],另外enctype的正确写法是multipart/form-data(你少了个横杠)。
  • <option>里的href属性是无效的,下拉框的选项是通过value属性传递选中值的,提交表单时会把选中的value以name="role"的参数名传递到目标页面。
  • 代码外层还有一个多余的</select>标签,导致HTML结构不闭合,这也会影响页面功能。

修正后的完整代码:

<?php require "pages/header.php" ?>
<?php 
// 如果header.php里没启动session,记得打开这行
// session_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "apple";
// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
include "navbar.php";
$sql = "SELECT * FROM `table_3`";
$result = $conn->query($sql);
?>
<link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/sign-in/">
<!-- Bootstrap核心CSS -->
<link href="https://getbootstrap.com/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link href="https://getbootstrap.com/docs/4.3/examples/sign-in/signin.css" rel="stylesheet">

<!-- 只创建一个表单,包裹整个下拉选择器 -->
<form action="repaired.php" method="GET" enctype="multipart/form-data">
    <!-- 一个下拉选择器,name="role"用来标识传递的参数 -->
    <select id="role" name="role" class="form-signin form-control">
        <?php 
        if ($result->num_rows > 0) {
            // 循环生成每个选项,把数据库里的model作为value和显示文本
            while($row = $result->fetch_assoc()) {
                echo '<option value="'.$row['model'].'">'.$row['model'].'</option>';
            }
        } else {
            echo '<option value="">暂无数据</option>';
        }
        $conn->close();
        ?>
    </select>
    <!-- 必须添加提交按钮,用户才能触发表单提交 -->
    <button class="btn btn-lg btn-primary btn-block mt-3" type="submit">提交</button>
</form>

如何在目标页面接收数据:

在repaired.php中,你可以通过$_GET['role']获取用户选中的型号值:

<?php
// 先判断参数是否存在,避免报错
if(isset($_GET['role']) && !empty($_GET['role'])){
    $selectedModel = $_GET['role'];
    echo "你选中的型号是:".$selectedModel;
} else {
    echo "请选择一个型号";
}
?>

额外说明:

如果你的需求是每个选项对应直接跳转到带model参数的页面,而不是通过表单提交,那可以不用表单,直接在循环里生成带链接的选项(不过原生select不支持点击选项跳转,需要配合JS),但从你的代码来看,你更倾向于用表单提交选中值,所以上面的方案更适合你。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:30:30