2015-04-04 139 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"; 
     }