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 關注
- 383 瀏覽
添加回答
舉報