无法在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
相关产品推荐
相关产品推荐

