1 回答
TA贡献1820条经验 获得超10个赞
您正在执行两次查询。
事实上,你的代码是这样写的:
$stmt->execute();
if(false===($stmt->execute())){
$nbadmin->close();
echo '<script>alert("Something went wrong; try again.")</script>';
error();
}else{
$nbadmin->close();
finish();
}
但是,该片段的第一行执行准备好的语句,然后作为条件的一部分再次执行if(...)。
这因此执行了另一个插入,但失败了,可能是因为您的数据库表上有一些独特的约束,我猜是在该username字段上。
您有两种可能的解决方案。首先,您可以将结果保存execute()到一个变量中,如下所示:
$result = $stmt->execute();
if(false === $result) { ... }
或者,您可以直接在if(...)语句中调用该方法,如下所示:
// $stmt->execute(); // remove this line
if(false === $stmt->execute()) { ... }
不过,我自己更倾向于第一种选择。
最后,请注意,您也执行$nbadmin->prepare($sql)与$stmt->bind_param('sssssss', $user, $pass, $name, $branch, $officer, $type, $alert)两次,出于同样的原因,但这些似乎并没有产生一个错误。
- 1 回答
- 0 关注
- 307 浏览
添加回答
举报