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