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

点击提交按钮无法通过PHP删除数据库表记录的问题

问题排查与解决步骤

你的代码存在多个关键问题,导致删除操作无法正常执行,以下是逐一排查和修复方案:

1. 补全表单基础结构

提交按钮必须包裹在<form>标签内,且表单需指定method="post",否则无法触发POST请求:

<form method="post" action="">
  <!-- 你的下拉选择框(必须确保name属性为deleteweaponname) -->
  <select name="deleteweaponname">
    <!-- 选项内容示例 -->
    <option value="长剑">长剑</option>
    <option value="匕首">匕首</option>
  </select>
  <input type="submit" value="Delete Selected Weapon" class="mybutton" name="Submit">
</form>

action留空则表单提交到当前页面,需确保PHP处理逻辑与表单在同一文件,或action指向对应PHP文件。

2. 验证下拉框的name属性

确认下拉选择框的name属性确实是deleteweaponname,否则$_POST['deleteweaponname']无法获取到值,直接导致SQL语句无效。

3. 修复SQL语法错误并解决注入风险

你的SQL语句中,字符串类型字段值未加单引号,同时直接拼接用户输入存在SQL注入漏洞,必须改用预处理语句:

<?php
// 开启错误调试,方便排查问题
error_reporting(E_ALL);
ini_set('display_errors', 1);

if(isset($_POST['Submit']))
{
    require_once('../connect.php');
    // 先检查是否选择了武器
    if(!empty($_POST['deleteweaponname'])) {
        $selected = $_POST['deleteweaponname'];
        // 使用预处理语句避免注入,同时修复语法
        $sql = "DELETE FROM weapon WHERE weaponname = ?";
        $stmt = $connect->prepare($sql);
        $stmt->bind_param("s", $selected); // "s"表示参数为字符串类型
        $result = $stmt->execute();
        
        if(!$result)
        {
            echo "Could not delete record: " . $connect->error; // 输出具体错误信息
        } else {
            echo "Record deleted successfully";
        }
        $stmt->close();
    } else {
        echo "Please select a weapon to delete";
    }
    $connect->close();
}
?>

4. 开启错误提示排查隐藏问题

页面无任何提示是因为PHP错误可能被屏蔽,添加错误显示代码后,能直接看到语法错误、数据库执行错误等细节,快速定位问题。

5. 大小写一致性确认

按钮的name是Submit,所以isset($_POST['Submit'])是正确的,无需改成小写submit。

内容的提问来源于stack exchange,提问作者Pat Rose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:46:07