如何实现从$_GET["Value"]取值及电影列表页的编辑删除功能?
嘿,这两个都是PHP开发里非常基础且常用的操作,我来给你详细拆解一下~
1. 如何获取
$_GET["Value"]的值 $_GET是PHP的超全局变量,专门用来获取URL中通过?key=value形式传递的查询参数。不过直接取值前最好做一下安全校验,避免出现Undefined index错误或者安全风险。
基础用法(带校验)
假设你的访问URL是http://your-site.com/page.php?Value=123,可以这样获取:
// 先检查参数是否存在,避免报错 if (isset($_GET["Value"])) { // 直接获取原始值 $rawValue = $_GET["Value"]; // 重点:如果要把值输出到HTML页面,一定要做转义防止XSS攻击 $safeValue = htmlspecialchars($rawValue, ENT_QUOTES, 'UTF-8'); echo "获取到的Value值是:{$safeValue}"; } else { echo "参数Value不存在,请检查URL"; }
简化写法(PHP 7+)
如果你用的是PHP7及以上版本,可以用null合并运算符简化判断,给参数设置默认值:
// 如果Value存在就取它的值,否则用"默认值"替代 $value = $_GET["Value"] ?? "默认值"; // 同样记得转义后再输出 echo htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
2. 实现电影列表首页功能(带编辑/删除链接)
假设你已经有一个存储电影信息的数据库表(比如表名movies,字段包括id(主键,唯一标识每部电影)、title(电影标题)、year(上映年份)),下面是完整的实现步骤:
第一步:连接数据库(推荐用PDO,更安全)
// 替换成你的数据库信息 $host = 'localhost'; $dbname = 'your_database_name'; $username = 'your_db_username'; $password = 'your_db_password'; try { // 初始化PDO连接,设置字符集为utf8mb4支持emoji $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password); // 设置错误模式为抛出异常,方便调试 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("数据库连接失败:" . $e->getMessage()); }
第二步:查询电影数据并输出列表
// 查询所有电影,按年份倒序排列 $stmt = $pdo->query("SELECT id, title, year FROM movies ORDER BY year DESC"); // 把查询结果转成关联数组 $movies = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <!-- HTML页面部分 --> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>电影列表首页</title> <style> /* 简单美化一下表格 */ table { border-collapse: collapse; width: 80%; margin: 30px auto; } th, td { border: 1px solid #eee; padding: 10px; text-align: left; } th { background-color: #f8f9fa; font-weight: bold; } .action-links a { margin-right: 15px; text-decoration: none; } .edit-link { color: #007bff; } .delete-link { color: #dc3545; } </style> </head> <body> <h1 style="text-align: center;">电影列表</h1> <table> <thead> <tr> <th>电影标题</th> <th>上映年份</th> <th>操作</th> </tr> </thead> <tbody> <?php if (!empty($movies)): ?> <?php foreach ($movies as $movie): ?> <tr> <!-- 转义输出,防止XSS --> <td><?= htmlspecialchars($movie['title'], ENT_QUOTES, 'UTF-8') ?></td> <td><?= htmlspecialchars($movie['year'], ENT_QUOTES, 'UTF-8') ?></td> <td class="action-links"> <!-- 编辑链接:传递电影ID到edit.php --> <a href="edit.php?id=<?= $movie['id'] ?>" class="edit-link">编辑</a> <!-- 删除链接:传递电影ID到delete.php,加确认提示避免误删 --> <a href="delete.php?id=<?= $movie['id'] ?>" class="delete-link" onclick="return confirm('确定要删除这部电影吗?')">删除</a> </td> </tr> <?php endforeach; ?> <?php else: ?> <tr> <td colspan="3" style="text-align: center; padding: 20px;">暂无电影数据</td> </tr> <?php endif; ?> </tbody> </table> </body> </html>
关键细节说明
- 安全处理:所有输出到HTML的内容都用
htmlspecialchars转义,防止XSS跨站脚本攻击;数据库操作用PDO,避免SQL注入。 - 编辑/删除链接:通过
?id=xxx把电影的唯一ID传递给edit.php和delete.php,在这两个页面里你可以用$_GET['id']获取ID,然后做对应的编辑/删除操作。 - 删除确认:给删除链接加了
onclick事件,弹出确认框,防止用户误点删除。
补充:edit.php里获取ID的示例
// edit.php中获取并验证电影ID if (isset($_GET['id']) && is_numeric($_GET['id'])) { $movieId = intval($_GET['id']); // 用预处理语句查询电影详情,防止SQL注入 $stmt = $pdo->prepare("SELECT * FROM movies WHERE id = ?"); $stmt->execute([$movieId]); $movie = $stmt->fetch(PDO::FETCH_ASSOC); // 接下来就可以显示编辑表单,把$movie的内容填充进去 } else { die("无效的电影ID,请检查链接"); }
内容的提问来源于stack exchange,提问作者spillresist
相关产品推荐
相关产品推荐

