2015-04-04 143 views
0

我是新來的php。循環遍歷數據庫表中的每一行php

我正在爲用戶進行登錄,然後我想比較他/她登錄到我的數據庫表中每行時的用戶名和密碼。

對於這種情況,假設用戶=邁克爾,pssword = 1234

我得到這個:

$username= "michael"; 
    $password= "1234"; 

include("includes/connect.php"); 
$mobile_user = "select * from mobileuser" ; 
$query = mysqli_query ($conn, $mobile_user); 

while($results = mysqli_fetch_array ($query)){ 
     $user_name = $results['mobile_user_name']; 
     $pass = $results['mobile_user_pass']; 

    } 

然而,這僅僅比較數據的最後一行在我的數據庫表。

例如,如果username = michael n password = 1234位於我的數據庫表的最後一行,那麼登錄成功,如果它不在最後一行,登錄失敗。

任何人都可以幫助嗎?

回答

0

您應該修改代碼爲:

$username= "michael"; 
$password= "1234"; 
include("includes/connect.php"); 

$mobile_user = "SELECT * FROM mobileuser WHERE mobile_user_name='$username' AND mobile_user_pass='$password' LIMIT 0,1"; 

$query = mysqli_query ($conn, $mobile_user); 
$result = mysqli_fetch_array ($query); 

$user_name = $result['mobile_user_name']; 
$pass = $result['mobile_user_pass']; 

這應該工作就像一個魅力。然而一個更好的版本中,這將是:

$username= "michael"; 
$password= "1234"; 
include("includes/connect.php"); 

$mobile_user = "SELECT count(*) as count FROM mobileuser WHERE mobile_user_name='$username' AND mobile_user_pass='$password'"; 

$query = mysqli_query ($conn, $mobile_user); 
$result = mysqli_fetch_array ($query); 

if($result['count'] > 0){ 
    echo "Match Found."; 
} 
0

如果你想檢查用戶的憑證是否有效,你應該計算它們匹配的行數;如果小於1,則提供的憑據無效。 SQL查詢:

SELECT COUNT(*) AS number, mobile_user_name, mobile_user_pass FROM mobileuser WHERE mobile_user_name = 'someusername' AND mobile_user_pass = 'somepass' 

請注意,您應該阻止你的代碼SQL injections,你可能要散列密碼存儲在數據庫中,以避免明文放養它們。

0

給這個一去:

require_once ('con.php'); 

     $q = "SELECT `password` FROM `tbl_where_user_is` WHERE `tbl_row_username` = '$username'"; 
     $r = mysqli_query($db_connnect, $q); 
     $row = mysqli_fetch_array($r); 

     $r = mysqli_query ($db_connnect, $q); 

     if(mysqli_num_rows($r)==1) 
     { 
      echo $username; 
     }else{ 
      echo "user not found"; 
     }