PHP无复选框时点击编辑/删除按钮无法获取对应ID的问题排查
解决你的编辑/删除按钮无法获取对应行ID的问题
看起来你的代码里有几个小细节问题导致了当前的异常,我来一步步帮你修正:
1. 修复页面渲染的语法错误与结构问题
你在隐藏输入框的写法上犯了语法错误,多打了一个闭合标签的>,导致value属性跑到了输入框外面,所以页面会显示value="1">这类多余文本。另外,删除按钮的表单里没有携带对应行的ID,还有同一行里两个元素重复使用了row_id这个id属性(虽然不影响功能,但不符合规范)。
同时注意:你原来的代码会给每一行数据生成一个独立的<table>标签,这不是正确的表格结构,我把<table>移到了循环外面。
修正后的列表渲染代码:
<?php $conn=mysqli_connect('localhost','root','','admin'); $sql="SELECT * FROM admin"; $result=mysqli_query($conn,$sql); ?> <table> <?php while($row=$result->fetch_assoc()) { $id=$row['id']; $name=$row['name']; $email=$row['email']; ?> <tr> <td><?php echo $id ?></td> <td><?php echo $name ?></td> <td><?php echo $email ?></td> <td> <form action="111.php" method="post"> <!-- 修正隐藏输入框的语法,移除多余的>,去掉重复id --> <input type="hidden" name="row_id" value="<?php echo $id ?>"> <input type="submit" name="edit" value="edit"> </form> </td> <td> <form action="111.php" method="post"> <!-- 给删除表单添加携带ID的隐藏输入框 --> <input type="hidden" name="row_id" value="<?php echo $id ?>"> <input type="submit" name="delete" value="delete"> </form> </td> </tr> <?php } ?> </table>
2. 修复处理页面(111.php)的逻辑问题
你的删除分支里尝试echo $name,但这个变量根本没有定义,同时最好增加对row_id是否存在的判断,避免出现未定义变量的警告。
修正后的处理代码:
<?php if(isset($_POST['edit'])) { if(isset($_POST['row_id'])) { $id=$_POST['row_id']; echo "要编辑的ID是:" . $id; } else { echo "未获取到目标ID"; } } if(isset($_POST['delete'])) { if(isset($_POST['row_id'])) { $id=$_POST['row_id']; echo "要删除的ID是:" . $id; // 这里可以添加实际删除数据库数据的代码(记得防SQL注入): // $conn=mysqli_connect('localhost','root','','admin'); // $safe_id = mysqli_real_escape_string($conn, $id); // $sql = "DELETE FROM admin WHERE id = $safe_id"; // mysqli_query($conn, $sql); } else { echo "未获取到目标ID"; } } ?>
现在再测试一下:页面渲染时不会再显示多余的文本,点击编辑或删除按钮就能正确打印对应行的ID了。
内容的提问来源于stack exchange,提问作者Mazhar Hussain
相关产品推荐
相关产品推荐

