Php 打印mysqli SELECT查询的结果

Php 打印mysqli SELECT查询的结果,php,mysql,mysqli,Php,Mysql,Mysqli,我试图在数据库中搜索结果,并显示与该结果相关的所有列。我与数据库的连接工作正常,但我不知道如何打印查询结果 我尝试以数组的形式访问它,但它不起作用。我想要的是能够在数据库中搜索用户名“TEST”,并返回密码、电子邮件和用户名(检查用户名是否存在) 我现在的代码是 $user = mysqli_query($con,"SELECT * FROM user_list where username = '$username'"); print_r($user); $username是用户名。它返

我试图在数据库中搜索结果,并显示与该结果相关的所有列。我与数据库的连接工作正常,但我不知道如何打印查询结果

我尝试以数组的形式访问它,但它不起作用。我想要的是能够在数据库中搜索用户名“TEST”,并返回密码、电子邮件和用户名(检查用户名是否存在)

我现在的代码是

$user = mysqli_query($con,"SELECT * FROM user_list where username = '$username'");
print_r($user); 
$username
是用户名。它返回这个

(
    [current_field] => 0
    [field_count] => 4
    [lengths] => 
    [num_rows] => 2
    [type] => 0
)

您需要首先使用mysqli\u fetch\u assoc获取结果

$userResult = mysqli_query($con,"SELECT * FROM user_list where username = '" . mysqli_real_escape_string($con, $username) . "'"); 
$user = mysqli_fetch_assoc($userResult);
print_r($user);
  • 通过转义字符串来避免sql注入
您必须确保您的结果:

$user = mysqli_query($con,"SELECT * FROM user_list where username = '$username'");

while ($row = $user->fetch_row()) {
        print_r($row);
    }
while($row=mysql\u fetch\u数组($user,mysql\u ASSOC))
{
回显“MATE:{$row['MATE']}
”。 测试:{$row['TEST']}
。 “-------------------------------------
”; } 这可能对你有用。
使用Fetch显示结果

     $result = mysqli_query($con,"SELECT * FROM user_list where username = '" . mysqli_real_escape_string($con, $username) . "'"); 
    while($row = mysqli_fetch_array($result))
     {
        print_r($row);
     } 

要获得
mysqli\u query()
的结果,您需要使用其中一个函数,返回行。例如,获取所有行或获取单个行

也可以直接在对象上循环

$result = mysqli_query($con, 'SELECT ...');
foreach($result as $row) {
    print_r($row);
    // do something with each row
}
但是,在您的情况下,您根本不应该使用
mysqli\u query()
!这使您容易受到SQL注入的攻击。您必须使用参数绑定,这在准备好的语句中可用

例如,您的固定查询如下所示:

$stmt = $con->prepare('SELECT * FROM user_list where username = ?');
$stmt->bind_param('s', $username);
$stmt->execute();
$result = $stmt->get_result();
foreach ($result as $row) {
    print_r($row);
}

不同之处在于,我的变量不是与SQL分离的,因此没有注入的风险。决不允许在SQL查询中直接输入任何变量。正确地做到这一点并不难

您需要先使用mysqli\u fetch\u assoc($user)获取结果。切勿以明文或使用MD5/SHA1存储密码!仅存储使用PHP创建的密码哈希,然后可以使用进行验证。看看这篇文章:了解更多关于使用准备好的语句来避免SQL注入的信息,不要使用转义。为什么?mysqli可以用于过程和OOP。如果您使用程序化,您需要以某种方式进行转义,这就是为什么
mysqli\u real\u escape\u string
是。没有理由使用mysqli procedural。。逃跑很容易被忘记。
$stmt = $con->prepare('SELECT * FROM user_list where username = ?');
$stmt->bind_param('s', $username);
$stmt->execute();
$result = $stmt->get_result();
foreach ($result as $row) {
    print_r($row);
}