You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中isset无法检测到删除按钮点击的问题排查

问题分析与解决

核心问题1:提交按钮未包含在<form>标签内

submit类型的按钮必须放在<form>标签中才能触发HTTP请求,你的代码里直接在表格中添加submit按钮,未包裹form标签,点击时不会向服务器发送POST数据,导致isset($_POST['Delete'])永远不成立。

核心问题2:参数传递逻辑错误

  • 你试图通过$_GET['id']获取ID,但如果是POST提交,参数应通过POST传递;
  • 按钮的id属性不会被提交到服务器,只有name和value会被携带。当前所有按钮的name都是"Delete",点击后只能拿到$_POST['Delete']的值为"Drop",无法区分是哪一行的按钮。

额外HTML语法错误

生成按钮的代码里多写了一个<tr>标签:

echo '<td><center><input type="submit" id='.$book_id.' name="Delete" value ="Drop"><center></td><tr>';

末尾的<tr>应为</tr>,会导致表格结构混乱。


修正后的代码示例

1. 包裹表单并传递ID

给每个按钮所在单元格单独包裹form,通过隐藏字段传递book_id:

if(mysqli_num_rows($result) > 0)
{
    echo "<br><br>";
    echo "<table border='1'>";
    echo "<th>BOOK ID</th><th>BOOK NAME</th><th>PRICE</th><th>ACTION</th>";
    while ($row = mysqli_fetch_assoc($result))            
    {                
        $book_id = $row['book_id'];
        echo "<tr>";
            echo "<td>" .$row['book_id']. "</td>";
            echo "<td>" .$row['book_name']. "</td>";
            echo "<td>" .$row['price']. "</td>";
            echo '<td><center>
                    <form method="post" action="">
                        <input type="hidden" name="book_id" value="'.$book_id.'">
                        <input type="submit" name="Delete" value="Drop">
                    </form>
                  </center></td>';
        echo "</tr>";
    }
    echo "</table>";
}

2. 修正后端检测代码

通过POST获取传递的book_id:

if (isset($_POST['Delete'])) 
{
   $ID = $_POST['book_id'];
   echo $ID;
   // 此处可添加数据库删除逻辑
}

内容的提问来源于stack exchange,提问作者lakshitha dilhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:31:04