2016-09-03 7 views
0

ログインID、ユーザ名、パスワード、ランクのテーブルが2つあり、もう1つはアカウントステータス用です。私はすべてのアクティブなアカウントだけを実行するためにテーブルに参加する必要があります。 phpmyadminで自分のコードを試すたびにうまくいきますが、私のシステムでは動作しません。私のコードに何か問題はありますか? Btw。ランクは、あなたが管理人または学生の場合、アカウントの確認用です。php innerは2つ以上のテーブルを結合します

$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(); 
+0

定義 "は動作しません"。 mysqli_num_rowsのwhileループがそれ自身のように無意味なループを引き起こす意味をなさないならば、私が最も目にすることは分かります。 –

+0

どうすればいいですか? – Mals

+0

私は何が起こっているのか、起こっていないのか、_all_関連するコードであるのか、無効なスニペットではないのかを正確に伝えることから始めます。 –

答えて

0
$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"; 
} 
+0

私はmysqli_fetchのために$ rowを使いました。そして、以下はifとelseの条件です。私が作成したコードはログインフォーム用です。 – Mals

+0

ログインに使用している場合は、if($ row> 0)をチェックしてからtrue以外の場合はfalse –

+0

mysqli_num_rowsは連想配列をまったく取得せず、intを返します。 –

関連する問題