我想弄清楚爲什麼我的代碼不工作。我得到「調用成員函數execute()在布爾」這應該表明我犯了一個SQL錯誤的錯誤。雖然我不確定它是什麼。我一直在看其他帖子,但他們對我來說並不是很有用。對不起,如果它是重複的。試圖檢查它的用戶名和電子郵件已存在
if(isset($_POST["signup"])) {
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING)
or die('Error: missing username');
$email = filter_input(INPUT_POST, 'email')
or die('Error: missing email');
$password = filter_input(INPUT_POST, 'password')
or die('Error: missing password');
$sql = $db->prepare('SELECT username, email FROM wyvern_user WHERE
username=?, email=?');
$sql->execute();
$sql->bind_result($username, $email);
while($stmt->fetch()) {
if($username && $email > 1) {
echo "User Already in Exists<br/>";
} else {
$query = $db->prepare("INSERT INTO wyvern_user (username, email, password)
VALUES(?, ?, ?)");
$query->bind_param('sss', $username, $email, $password);
$query->execute();
echo "Account created";}
}
}
這是我的形式,如果它有所作爲。
<form class="theform" action="signup.php" method="post">
<p>Register as user:</p><br>
Username<span>*</span><input type="text" name="username" value=""
placeholder="username"><br><br>
Email<span>*</span> <input type="email" name="email" value=""
placeholder="email"><br><br>
Password<span>*</span><input type="password" name="password"
value="" placeholder="password"><br><br>
<input type="submit" name="signup" value="signup"><br><br>
</form>
'WHERE username =?,email =?'應該是WHERE username =?和電子郵件=?'爲一。而且你不綁定這些變量,只是結果,你也需要select中的'bind_param'。而'if($ username && $ email> 1)'不會做你認爲它做的事。 – Qirel
您應該使用唯一約束,而不是查詢來防止輸入重複的用戶名和電子郵件。 – Shadow
這不是同一個問題。 –