0
我試圖讓我的PHP腳本檢查電子郵件和用戶名是否已經存在於數據庫中,然後顯示消息,如果他們這樣做 - 我最初能夠檢查只有一個成功,但現在我試圖檢查插入之前,我有一些問題。使用2個單獨的查詢來檢查數據庫中是否存在電子郵件和用戶名
有人可以給我一些關於我在做什麼錯誤的建議嗎?
// Check if simple anti-bot test is correct
if ($human !== 5) {
$errHuman = 'Your anti-spam is incorrect';
}
else {
if (!$errEmail && !$errUsername && !$errPassword && !$errPassMatch && !$errHuman) {
$query1="SELECT email FROM blog_members WHERE email='$email'";
$query2="SELECT username FROM blog_members WHERE username='$signupusername'";
$result1=mysqli_query($conn, $query1);
$result2=mysqli_query($conn, $query2);
if ($result1 && mysqli_num_rows($result1) >=1) {
$error = "Email already exists!";
}else if ($result2 && mysqli_num_rows($result2) >=1) {
$error = "Username already exists!"
}else {
$query="INSERT INTO blog_members(username, password, email) VALUES ('$signupusername', '$signuppassword', '$email')";
$result=mysqli_query($conn, $query);
?>
<script type="text/javascript">
alert("User created, please login from the homepage!");
window.location.href = 'http://www.mywebsite.co.uk/index.php#login';
</script>
<?php
}
}
}
會發生什麼?你有錯誤嗎? – Daniel
你是否試過這樣的WHERE email ='$ email'和username ='$ signupusername',或者單獨使用,如果不是的話,如果 – zod
你已經開放SQL注入。由於您使用的是mysqli,請利用[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[bind_param](http://php.net/手動/ EN/mysqli的-stmt.bind-param.php)。這也有助於防止討厭的報價問題。 – aynber