我正在尝试处理一个表单,如果用户输入存在于数据库中的电子邮件,则会将其重定向到索引页面,但我似乎无法找出我的代码无效的原因。它不会使用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();
?>
答案 0 :(得分:0)
您可以使用:
$email = addslashes($_POST['email']);
$query = "SELECT * FROM FacultyRegistration where email = '$email'" ;
您没有将电子邮件放在引号之间。
答案 1 :(得分:0)
您可以更改此代码
if (mysqli_num_rows($result) > 0)
到
if (count($result) > 0)
答案 2 :(得分:0)
由于您在发送标头之前发送内容,因此无效。 如果您需要使用header()函数,那么您需要确保没有内容返回给浏览器。
可能会收到Headers already sent
警告。
要使其正常工作,请删除此行
echo "Connection Successful";
并将您的查询更改为
$query = "SELECT * FROM `FacultyRegistration` WHERE `email` = '" . $_POST['email'] . "';";
您收到SQL错误,因为@
是特殊字符,您需要使用字符串文字转义电子邮件''
最好添加一些转义或预处理语句以避免SQL注入,例如mysqli_real_escape_string()