使用PHP和SQL删除数据库数据:如何获取删除按钮对应的好友信息
解决方案
你可以通过给每个表单添加隐藏域的方式,将当前条目的好友ID/姓名和提交按钮绑定,具体修改方法如下:
步骤1:修改循环内的表单代码
在每个Unfriend按钮所在的form标签内,添加隐藏输入框,存储当前好友的ID或者姓名,推荐优先用ID做删除依据(避免姓名重复导致误删):
<?php echo "<table border='1' width= 300px > <tr> <th>Friend Names</th> <th>Remove Friends</th> </tr>"; while($row = mysqli_fetch_assoc($result2)) { $friend_id_got = $row['friend_id2']; $query3 = "SELECT profile_name from friends where friend_id = ? "; // 这里改用预处理语句避免SQL注入 $stmt = $conn->prepare($query3); $stmt->bind_param("i", $friend_id_got); $stmt->execute(); $result3 = $stmt->get_result(); $final3 = mysqli_fetch_assoc($result3); echo "<tr>"; echo "<td>" . $final3['profile_name'] . "</td>"; echo "<td>" ?> <form action="friendlist.php" method= "POST"> <!-- 隐藏域存储当前好友ID 也可以按需存储姓名 --> <input type="hidden" name="friend_id" value="<?php echo $friend_id_got; ?>"> <input type="hidden" name="friend_name" value="<?php echo $final3['profile_name']; ?>"> <button id="add-friend-btn" type= 'submit' name = 'submit'>Unfriend</button> </form> <?php "</td>"; echo "</tr>"; } echo "</table>"; ?>
步骤2:添加删除逻辑
在friendlist.php的顶部添加POST请求处理代码,接收传递过来的好友ID/姓名,执行删除操作:
<?php // 处理Unfriend请求 if (isset($_POST['submit'])) { $delete_friend_id = $_POST['friend_id']; $delete_friend_name = $_POST['friend_name']; // 你需要的姓名数据可以直接从这里取 // 执行删除操作 同样用预处理语句避免注入 $delete_sql = "DELETE FROM friends WHERE friend_id = ?"; $stmt = $conn->prepare($delete_sql); $stmt->bind_param("i", $delete_friend_id); $stmt->execute(); // 删除完成后可以刷新页面更新列表 header("Location: friendlist.php"); exit; } ?>
注意:原有代码中直接拼接SQL参数的写法存在SQL注入风险,所有和数据库交互的查询都建议改用预处理语句实现,避免数据泄露或恶意篡改。
内容的提问来源于stack exchange,提问作者Freelance Work
相关产品推荐
相关产品推荐

