我正在尝试处理一个表单,如果用户输入了数据库中存在的电子邮件,他们会被重定向到索引页,但我似乎找不到我的代码不起作用的原因。它不会进入if语句来检查用户。
// Create connection
$conn = mysqli_connect($host, $user, $password, $database, $port);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connection Successful";
$query = "SELECT * FROM FacultyRegistration where email = " . $_POST['email'] ;
$result = mysqli_query($conn, $query) or die ("There was an error:" . mysqli_error($conn));
if (mysqli_num_rows($result) > 0) {
header('Location: index.php');
exit();
}
else{
header('Location: register.php');
exit();
}
$conn->close();
?>
您可以使用这个:
$email = addslashes($_POST['email']);
$query = "SELECT * FROM FacultyRegistration where email = '$email'" ;
你没有把电子邮件放在报价之间。
它不起作用,因为您在发送标头之前先发送内容。如果您需要使用header()函数,那么您需要确保没有任何内容返回到浏览器。
可能,您收到Headers already sent
警告。
要使其工作,请删除此行
echo "Connection Successful";
并将您的查询更改为
$query = "SELECT * FROM `FacultyRegistration` WHERE `email` = '" . $_POST['email'] . "';";
您得到SQL错误,因为@
是特殊字符,您需要用字符串文本''
转义电子邮件
最好添加一些转义或准备好的语句来避免SQL注入,例如mysqli_real_escape_string()
您可以更改此代码
if (mysqli_num_rows($result) > 0)
至
if (count($result) > 0)