
本文讲解如何在 php web 应用中安全、正确地通过 url 查询参数(get 方法)向其他页面(如 update.php 或 delete.php)传递数据,重点解决因变量未正确输出导致 id 无法传递的问题。
本文讲解如何在 php web 应用中安全、正确地通过 url 查询参数(get 方法)向其他页面(如 update.php 或 delete.php)传递数据,重点解决因变量未正确输出导致 id 无法传递的问题。
在 PHP 动态网页开发中,常需将数据库记录的唯一标识(如 ID)传递至编辑或删除页面。常见错误是直接在 HTML 属性中写入 PHP 变量(如 href='update.php?id=$readRow[ID]'),这会导致变量名被当作纯文本解析,而非执行 PHP 输出——结果是 URL 中实际出现的是字面量 $readRow[ID],而非真实的数字 ID(如 id=123),后端脚本自然无法获取有效参数。
正确做法是:所有 PHP 变量必须包裹在 <?php echo ... ?> 中,并确保其在 HTML 属性值内被完整、无引号干扰地渲染。以下是修正后的表格行代码:
<tr>
<td><img src="<?php echo htmlspecialchars($readRow['Photo']); ? alt="如何在 PHP 中通过 URL 传递数据(GET 方式)" >" width="64px" alt="Player photo"></td>
<td><?php echo htmlspecialchars($readRow['ID']); ?></td>
<td><?php echo htmlspecialchars($readRow['Fname']); ?></td>
<td><?php echo htmlspecialchars($readRow['Lname']); ?></td>
<td><?php echo htmlspecialchars($readRow['Age']); ?></td>
<td><?php echo htmlspecialchars($readRow['Email']); ?></td>
<td><?php echo htmlspecialchars($readRow['Phone']); ?></td>
<td>
<a href="update.php?id=<?php echo (int)$readRow['ID']; ?>"
data-toggle="modal"
data-target="#editplayer"
class="btn btn-success">Edit</a>
<a href="delete.php?id=<?php echo (int)$readRow['ID']; ?>"
name="Delete"
class="btn btn-danger">Delete</a>
</td>
</tr>✅ 关键改进说明:
- 使用
<?php echo $readRow['ID']; ?>替代$readRow[ID]—— 确保 PHP 解析并输出真实值; - 对
id=参数使用(int)强制类型转换(如<?php echo (int)$readRow['ID']; ?>),防止恶意字符串注入,提升安全性; - 所有用户输出内容(如姓名、邮箱、照片路径)建议配合
htmlspecialchars()进行 HTML 实体转义,防范 XSS 攻击; - 注意单双引号一致性:PHP 代码块内不可嵌套未转义的同类型引号,推荐统一使用双引号包裹 URL,内部用单引号访问数组键(如
$readRow['ID'])。
⚠️ 补充提醒:
立即学习“PHP免费学习笔记(深入)”;
-
delete.php和update.php中需主动接收并校验$_GET['id'],例如:if (!isset($_GET['id']) || !is_numeric($_GET['id'])) { die('Invalid or missing ID.'); } $id = (int)$_GET['id']; - 生产环境建议对敏感操作(如删除)使用 POST + CSRF Token,避免仅依赖 GET 请求,防止误点击或爬虫触发。
掌握这一基础机制,是构建可维护、安全的 PHP CRUD 应用的关键第一步。



















