[英]php inner join more than 2 tables
我有2个表,一个用于登录ID,用户名,密码和等级,另一个用于帐户状态。 我需要加入表以仅执行所有活动帐户。 每次我在phpmyadmin中尝试我的代码时,它都能正常工作,但在我的系统中,它将无法正常工作。 我的代码有什么问题吗? 顺便说一句。 如果您是管理员或学生,则等级用于帐户验证。
$sql = "SELECT a.login_id,username,password,rank,b.status FROM login2 as a INNER JOIN login_stat2 as b ON a.login_id = b.login_id WHERE username ='".$username."' AND password='".$pass."' AND b.status='ACTIVE'";
$result = mysqli_query($con,$sql)or die(mysqli_error($con));
while($row = mysqli_num_rows($result));
session_regenerate_id();
$member = mysqli_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['login_id'];
$_SESSION['SESS_NAME'] = $member['username'];
$_SESSION['SESS_RANK'] = $member['rank'];
if($member['rank']=='administrator'){
header("location: login_reg.php");
}
else if($member['rank']=='student'){
header("location: student.php");
}
else if($member['rank']=='candidate'){
header("location: candidate.php");
}
}else{
print "Incorrect username or password";
session_write_close();
$sql = "SELECT a.login_id,a.username,a.password,a.rank,b.status FROM login2 as a INNER JOIN login_stat2 as b ON a.login_id = b.login_id WHERE a.username ='".$username."' AND a.password='".$pass."' AND b.status='ACTIVE'";
$result = mysqli_query($con,$sql)or die(mysqli_error($con));
if(mysqli_num_rows($result)) {
echo 'Login success';
} else {
echo 'invalid username and password';
}
mysqli_num_rows()函数返回结果集中的行数。
更新的代码
//create connection
$conn = new mysqli('localhost', 'root', '', 'demo');
//check connection
if($conn->connect_error) {
die("connection failed: ".$conn->connect_error);
}
echo "Connection Successful <br>";
$sql = "SELECT a.login_id,a.username,a.password,a.rank,b.status FROM login2 as a INNER JOIN login_stat2 as b ON a.login_id = b.login_id WHERE a.username ='admin' AND a.password='admin' AND b.status='ACTIVE'";
$result = mysqli_query($conn,$sql) or die(mysqli_error($con));
if(mysqli_num_rows($result)) {
echo "login";
} else {
print "Incorrect username or password";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.