如何在PHP表格最后一列添加跳转至更新/删除页的按钮?
解决联系人表格添加编辑/删除跳转按钮的问题
当前代码的问题
- 循环内误用了未定义的变量
$contact['id'],实际应该使用循环迭代的$row['id'] - 跳转地址未指向要求的
contact-update.php和contact-delete.php页面 - HTML字符串拼接时引号嵌套错误,会导致页面结构异常
修改后的完整代码
<?php require 'config.php'; // 启动会话 session_start(); // 页面权限验证 if (!isset($_SESSION['loggedin'])) { header('Location: login.php'); exit; } $pdo = pdo_connect_mysql(); $stmt = $pdo->prepare('SELECT * FROM `contacts`'); $stmt->execute(); // 原代码中$contacts变量未使用,可根据需求保留或删除 $contacts = $stmt->fetch(PDO::FETCH_ASSOC); ?> <?= template_header("Contacts") ?> <?= template_nav() ?> <!-- START PAGE CONTENT --> <?php if ($userResponses) : ?> <p class="notification is-danger is-light"> <?php echo implode('<br>', $userResponses); ?> </p> <?php endif; ?> <h1 class="title">Contacts</h1> <table class="table"> <thead> <tr> <td>#</td> <td>Name</td> <td>Email</td> <td>Phone</td> <td>Title</td> <td>Created</td> <td>操作</td> </tr> </thead> <tbody> <?php // 重置查询游标,确保能完整遍历所有数据(因之前执行过一次fetch) $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "<tr>" . "<td>" . $row["id"] . "</td>" . "<td>" . $row["name"] . "</td>" . "<td>" . $row["email"] . "</td>" . "<td>" . $row["phone"] . "</td>" . "<td>" . $row["title"] . "</td>" . "<td>" . $row["created"] . "</td>" . "<td>" . '<div class="buttons">' . '<a href="contact-update.php?id=' . $row['id'] . '" class="button is-success">编辑</a>' . '<a href="contact-delete.php?id=' . $row['id'] . '" class="button is-danger">删除</a>' . '</div>' . "</td>" . "</tr>"; } ?> </tbody> </table> <!-- END PAGE CONTENT --> <?= template_footer() ?>
关键修改说明
- 修正变量引用:将循环内的
$contact['id']改为$row['id'],确保获取当前行的联系人ID - 修正跳转地址:将链接指向
contact-update.php和contact-delete.php,并通过?id=xxx传递ID参数,目标页面可通过$_GET['id']获取该ID进行后续编辑/删除操作 - 修复引号嵌套:HTML部分改用单引号包裹,避免与PHP双引号字符串冲突,保证HTML结构正常解析
- 重置查询游标:因为之前执行过一次
$stmt->fetch()给$contacts,导致游标移动,重新执行$stmt->execute()确保能遍历所有联系人数据
内容的提问来源于stack exchange,提问作者LUnacy45
相关产品推荐
相关产品推荐

