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

PHP实现将MySQL数据赋值到HTML表单隐藏输入框问题求助

问题分析与解决方案

你的核心问题集中在URL参数拼接错误和SQL查询的语法与安全问题上,导致无法正确传递并获取unique_id,进而无法给第二个表单的隐藏框赋值。下面一步步帮你修复:

1. 修复跳转URL的参数拼接错误

你当前的跳转代码用了两个问号连接参数:

header("location:../book_trip.php?msg=$m?ui=$unique_id");

这会让URL变成book_trip.php?msg=Booking placed?ui=abc123,此时ui并不是独立的GET参数,而是msg值的一部分,自然无法通过$_GET['ui']获取到。

正确写法应该用&连接多参数,同时用urlencode()处理消息字符串避免特殊字符破坏URL,还要在header后加exit()终止脚本执行:

header("location:../book_trip.php?msg=" . urlencode($m) . "&ui=$unique_id");
exit();

2. 修复SQL查询的语法与安全问题

你的查询语句中,ui是字符串类型(uniqid()生成的是字符串),但你没给$dbook_id加引号,会直接导致SQL语法错误;同时直接拼接变量的写法存在SQL注入风险,强烈改用预处理语句:

修改后的查询代码:

<?php
require_once 'includes_2/dbh.inc_2.php';
$d_name = "";
if (isset($_GET['ui'])) {
    $dbook_id = $_GET['ui'];
    // 使用预处理语句防注入
    $stmt = $conn->prepare("SELECT f_name FROM bookings WHERE ui = ?");
    $stmt->bind_param("s", $dbook_id); // "s"表示参数为字符串类型
    $stmt->execute();
    $result = $stmt->get_result();
    if ($row = $result->fetch_assoc()) {
        $d_name = $row["f_name"];
    }
    $stmt->close();
}
?>

3. 确保隐藏输入框正确赋值

最后检查第二个表单的隐藏框是否正确输出$d_name,同时用htmlspecialchars()防止XSS攻击:

<input type="hidden" name="hidden_name" value="<?php echo htmlspecialchars($d_name); ?>">

额外小提醒

你的第一个表单处理代码中,PHPMailer的调用用了-&gt;(HTML实体),在PHP代码里应该直接写->,否则会导致邮件功能无法正常初始化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:27:55