在 php 中遍历数据库 table 中的每一行

Loop through every row in a database table in php

我是 php 的新手。

我正在为用户登录,然后我想在 he/she 登录到我的数据库中的每一行时比较此人的用户名和密码 table。

对于这种情况,假设用户= michael,密码=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'];

   }

但是,这仅与我数据库中的最后一行数据进行比较 table。

例如,如果username=michael n password=1234位于我数据库的最后一行table,则登录成功,如果不位于最后一行,则登录失败。

有人可以帮忙吗?

如果您想检查用户的凭据是否有效,您应该计算它们匹配的行数;如果小于一,则提供的凭据无效。 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,并且您可能希望将散列密码存储在您的数据库中以避免以明文形式存储它们。

您应该将代码修改为:

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

试一试:

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";
        }