Php 一个数据库工作,另一个不工作
我有一个数据库,其中有4个表,2个用于私人用户,2个用于业务用户。出于某种原因,当我尝试使用商业用户的电子邮件登录时,它不起作用,但用户名起作用,在私有表中,它起作用,这是我的代码,如果我没有正确解释,请告诉我,我会尽力再解释一遍Php 一个数据库工作,另一个不工作,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我有一个数据库,其中有4个表,2个用于私人用户,2个用于业务用户。出于某种原因,当我尝试使用商业用户的电子邮件登录时,它不起作用,但用户名起作用,在私有表中,它起作用,这是我的代码,如果我没有正确解释,请告诉我,我会尽力再解释一遍 $password = $_POST['password']; $emailuser = $_POST['unameemail']; $password = mysqli_real_escape_string($sql , $password)
$password = $_POST['password'];
$emailuser = $_POST['unameemail'];
$password = mysqli_real_escape_string($sql , $password);
$emailuser = mysqli_real_escape_string($sql , $emailuser);
$pwcheck = "
SELECT * FROM private AS p
INNER JOIN user_private_data
AS c ON p.id = c.id
WHERE username='$emailuser' OR email='$emailuser'"; // part that works fine
$resultcheck = mysqli_query($sql , $pwcheck); // part that works fine
$rowcheck = mysqli_fetch_array($resultcheck , MYSQLI_ASSOC); // part that works fine
$hash = $rowcheck['password']; // part that works fine
$hash_pwd = password_verify($password , $hash);
if ($hash_pwd != 0) {
$_SESSION['username'] = $rowcheck['username']; // part that works fine
$_SESSION['logged'] = true; // part that works fine
header("refresh:0;url=../blablabla.php"); // part that works fine
} else {
$privateuser = "
SELECT * FROM business AS d
INNER JOIN user_business_data
AS j ON d.id = j.id
WHERE username='$emailuser' OR email='$emailuser'"; // doesn't work
$resultprivate = mysqli_query($sql , $privateuser); // doesn't work
$rowprivate = mysqli_fetch_array($resultprivate , MYSQLI_ASSOC);
$hashprivate = $rowprivate['password'];
$hash_private = password_verify($password , $hashprivate);
if ($hash_private != 0) {
$_SESSION['username'] = $rowprivate['username'];
$_SESSION['logged'] = true;
$_SESSION['business'] = $rowprivate['bname'];
$_SESSION['type'] = 'business';
}
试试这个:在获取之前,您需要检查查询是否确实有结果 我假设变量$sql是在您的连接中定义的
<?php
$password = $_POST['password'];
$emailuser = $_POST['unameemail'];
$password = mysqli_real_escape_string($sql, $password);
$emailuser = mysqli_real_escape_string($sql, $emailuser);
$pwcheck = "
SELECT * FROM private AS p
INNER JOIN user_private_data
AS c ON p.id = c.id
WHERE username='$emailuser' OR email='$emailuser'"; // part that works fine
$resultcheck = mysqli_query($sql, $pwcheck); // part that works fine
$rowcheck = mysqli_fetch_array($resultcheck, MYSQLI_ASSOC); // part that works fine
$hash = $rowcheck['password']; // part that works fine
$hash_pwd = password_verify($password, $hash);
if ($hash_pwd != 0) {
$_SESSION['username'] = $rowcheck['username']; // part that works fine
$_SESSION['logged'] = true; // part that works fine
header("refresh:0;url=../blablabla.php"); // part that works fine
} else {
$privateuser = "
SELECT * FROM business AS d
INNER JOIN user_business_data
AS j ON d.id = j.id
WHERE username='$emailuser' OR email='$emailuser'"; // doesn't work
$resultprivate = mysqli_query($sql, $privateuser); // doesn't work
if ($resultprivate->num_rows > 0) {
$rowprivate = mysqli_fetch_array($resultprivate, MYSQLI_ASSOC);
$hashprivate = $rowprivate['password'];
$hash_private = password_verify($password, $hashprivate);
if ($hash_private != 0) {
$_SESSION['username'] = $rowprivate['username'];
$_SESSION['logged'] = true;
$_SESSION['business'] = $rowprivate['bname'];
$_SESSION['type'] = 'business';
} else {
//no record
}
}
?>
在解析查询之前,请清理输入值。此脚本很容易受到SQL注入的攻击。您的脚本有可能发生错误。请查看发生了什么情况,即使使用此脚本也是登录页面,而不是注册页面“不工作”是不够的。当您访问业务用户的mysqli_查询时,您会遇到什么错误?我猜最后丢失的}
只是一个复制/粘贴错误?