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

PHP原生实现:根据URL参数查询SQL数据填充动态模板页

纯原生PHP实现编辑页模板方案

不需要任何第三方组件,全程使用原生PHP语法即可实现,做最简化的逻辑、视图分离,代码可直接复用。

第一步:安全获取并校验URL参数

在editradio.php文件最顶部处理参数逻辑,先做合法性校验,避免非法参数引发报错或注入风险:

<?php
// 初始化变量
$radioId = isset($_GET['radioID']) ? intval($_GET['radioID']) : 0;
$error = '';
$radioInfo = [];

// 参数非法直接标记错误
if ($radioId <= 0) {
    $error = '无效的设备ID';
}

第二步:连接数据库查询目标数据

参数校验通过后,使用PHP原生自带的PDO做参数化查询,彻底避免SQL注入问题,不要使用老旧的mysql_*系列函数:

// 无错误时才执行数据库查询
if (empty($error)) {
    // 替换为你自己的数据库连接配置
    $dbHost = 'localhost';
    $dbName = '你的库存数据库名';
    $dbUser = '你的数据库账号';
    $dbPass = '你的数据库密码';

    try {
        $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8mb4", $dbUser, $dbPass);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        // 预处理查询,绝对不要直接把变量拼接进SQL语句
        $stmt = $pdo->prepare("SELECT * FROM 你的库存表名 WHERE lid = ?");
        $stmt->execute([$radioId]);
        $radioInfo = $stmt->fetch(PDO::FETCH_ASSOC);

        if (!$radioInfo) {
            $error = '未找到对应设备的信息';
        }
    } catch (PDOException $e) {
        $error = '数据库查询失败:' . $e->getMessage();
    }
}
?>

第三步:编写原生模板填充内容

所有逻辑代码放在文件顶部,下方直接编写HTML结构,需要填充变量的位置用PHP短输出标签<?= ?>直接输出即可,原生PHP本身就可以作为模板使用,不需要额外引擎:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>编辑对讲机信息</title>
    <style>
        .form-item { margin: 12px 0; }
        label { display: inline-block; width: 120px; }
        .error { color: #c00; padding: 10px; border: 1px solid #fcc; background: #fff2f2; }
    </style>
</head>
<body>
    <h1>编辑设备信息</h1>
    <?php if (!empty($error)): ?>
        <div class="error"><?= htmlspecialchars($error) ?></div>
        <p><a href="javascript:history.back()">返回列表页</a></p>
    <?php else: ?>
        <form action="saveradio.php" method="post">
            <!-- 隐藏域传递设备ID,供后续保存逻辑使用 -->
            <input type="hidden" name="lid" value="<?= htmlspecialchars($radioInfo['lid']) ?>">
            
            <div class="form-item">
                <label>设备ID:</label>
                <input type="text" value="<?= htmlspecialchars($radioInfo['lid']) ?>" disabled>
            </div>
            <div class="form-item">
                <label>设备类型:</label>
                <input type="text" name="radio_typ" value="<?= htmlspecialchars($radioInfo['radio_typ'] ?? '') ?>">
            </div>
            <div class="form-item">
                <label>使用人:</label>
                <input type="text" name="user" value="<?= htmlspecialchars($radioInfo['user'] ?? '') ?>">
            </div>
            <div class="form-item">
                <label>警号:</label>
                <input type="text" name="badge" value="<?= htmlspecialchars($radioInfo['badge'] ?? '') ?>">
            </div>
            <div class="form-item">
                <label>所属单位:</label>
                <input type="text" name="entity" value="<?= htmlspecialchars($radioInfo['entity'] ?? '') ?>">
            </div>
            <div class="form-item">
                <label>部门:</label>
                <input type="text" name="department" value="<?= htmlspecialchars($radioInfo['department'] ?? '') ?>">
            </div>
            <div class="form-item">
                <label>设备序列号:</label>
                <input type="text" name="radio_serial" value="<?= htmlspecialchars($radioInfo['radio_serial'] ?? '') ?>">
            </div>
            <div class="form-item">
                <label>配发日期:</label>
                <input type="date" name="setup_date" value="<?= htmlspecialchars($radioInfo['setup_date'] ?? '') ?>">
            </div>
            <div class="form-item">
                <label>登记人:</label>
                <input type="text" name="author" value="<?= htmlspecialchars($radioInfo['author'] ?? '') ?>">
            </div>
            <div class="form-item">
                <button type="submit">保存修改</button>
                <a href="list.php" style="margin-left: 15px;">返回列表</a>
            </div>
        </form>
    <?php endif; ?>
</body>
</html>

关键注意点

  • 所有从URL参数、数据库取出后输出到HTML的内容,必须用htmlspecialchars()做转义,避免XSS安全风险
  • 所有数据库查询必须使用参数化预处理语句,禁止直接把变量拼接到SQL字符串中,防止SQL注入
  • 逻辑代码统一放在文件最顶部,和HTML视图部分自然分离,不需要额外引入模板语法,这是PHP原生开发最经典的轻量模板实现方式
  • 你现有列表页生成的跳转链接不需要做任何修改,点击后会自动传入ID、查询数据并填充到表单中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:31:01