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

无法在MySQL数据库中增删数据,adminuses.php语法错误求助

解决PHP语法错误及后续代码优化建议

你遇到的这个Parse error是非常典型的语法问题——第4行的if (isset($_POST['passbookid'])少了一个闭合的右括号),导致PHP解析器无法正确识别条件语句的结构,所以才会抛出unexpected '{'的错误。

接下来我们一步步修正并优化你的代码:

1. 修复核心语法错误

直接给isset()函数补上闭合括号即可:

// 错误写法
if (isset($_POST['passbookid']) {

// 正确写法
if (isset($_POST['passbookid'])) {

2. 修正数据库连接变量(潜在问题)

你的代码中使用mysqli_query($sql, $query),但通常我们在connection.php里定义的数据库连接变量是$conn(而非$sql,$sql一般用来存储SQL语句)。请确认你的connection.php中的连接变量名,如果是$conn,就把这部分改为:

$result = mysqli_query($conn, $query);

3. 避免SQL注入风险(关键优化)

直接将用户输入的$id拼接到SQL语句中存在严重的SQL注入风险,推荐使用预处理语句来替代:

完整修正后的代码

<?php 
include ("connection.php"); 

// 修复语法错误:添加闭合括号
if (isset($_POST['passbookid'])) { 
    $id= $_POST['passbookid']; 

    // 使用预处理语句防止SQL注入
    $query = "DELETE FROM passbook WHERE pid = ?";
    $stmt = mysqli_prepare($conn, $query);
    // 绑定参数:"s"表示字符串类型,如果pid是整数类型,改为"i"
    mysqli_stmt_bind_param($stmt, "s", $id);
    mysqli_stmt_execute($stmt);

    // 检查删除是否成功
    if (mysqli_stmt_affected_rows($stmt) > 0) { 
        header('location:adminlogin.php'); 
        exit; // 跳转后必须退出,避免后续代码执行
    } else {
        echo "删除失败,未找到对应ID的记录";
    }

    // 关闭预处理语句
    mysqli_stmt_close($stmt);
}
?>

额外注意事项

  • 跳转后加exit:使用header()跳转后,一定要加上exit或die(),防止脚本继续执行后续代码。
  • 连接变量确认:如果你的connection.php中确实用$sql作为连接对象,那可以保留,但建议遵循规范命名为$conn,避免混淆。
  • 错误处理:可以考虑添加更多错误捕获逻辑,比如检查预处理语句是否创建成功,方便排查问题。

内容的提问来源于stack exchange,提问作者Priyanka Banerjee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:25:23