簡體   English   中英

打印 mysqli SELECT 查詢的結果

[英]Print the Result of a mysqli SELECT Query

我正在嘗試在我的數據庫中搜索結果,並顯示與該結果相關的所有列。 我與數據庫的連接工作正常,但我不知道如何打印查詢結果。

我嘗試將它作為數組訪問,但沒有奏效。 我想要的是能夠在數據庫中搜索用戶名“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
)

使用 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_fetch_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 注入。

要獲得mysqli_query()的結果,您需要使用返回行的函數之一。 例如fetch_all()獲取所有行或fetch_array()獲取單行。

您也可以直接在對象上循環。

$result = mysqli_query($con, 'SELECT ...');
foreach($result as $row) {
    print_r($row);
    // do something with each row
}

但是,在您的情況下,您根本不應該使用mysqli_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 查詢中直接允許任何變量輸入。 正確地做到這一點真的沒有那么困難。

您必須獲取結果:

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

while ($row = $user->fetch_row()) {
        print_r($row);
    }
while($row = mysql_fetch_array($user, MYSQL_ASSOC))
{
    echo "MATE :{$row['MATE']}  <br> ".
         "TEST : {$row['TEST']} <br> ".
         "--------------------------------<br>";
}
it's may work your you.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM