2017-05-27 154 views
-1

我剛開始學習PHP,我必須爲學校做的任務。while(mysqli_fetch_array())返回只有1個結果,當有更多

我有一個mysqli_fetch_array()函數的問題。

這裏是我的代碼:

//Find all book_id for a specific student_id 
$query = " SELECT * FROM books_of_students WHERE student_id = '$s_id' "; 
$result = mysqli_query($conn, $query); 
$records_b_o_s = mysqli_num_rows($result); 

如果我贊同變量$ records_b_o_s它正確地顯示多少條記錄MySQL已經從表中返回,這裏是從phpMyAdmin的截圖:

books_of_students table

以下是我的代碼部分:

if ($records_b_o_s >= 1) { 

    while ($row = mysqli_fetch_array($result)) { 
     $temp_book_id = $row['book_id']; 
     //do other stuff 
    } 

} 

問題是循環只出現1次,$ row ['book_id']返回「books_of_students」表中第一本書的值。例如,如果我執行循環內的以下命令:

while ($row = mysqli_fetch_array($result)) { 
     $temp_book_id = $row['book_id']; 
     echo "Current book_id: " . $temp_book_id . "<br>"; //<---This one 
     //do other stuff 
} 

將只有1個消息,它會從表中只顯示第一book_id

我真不知道這裏做什麼所以我會非常感謝你的幫助!在此先感謝:)

+0

他們應該教你準備好陳述。有助於建立良好的基礎 – Akintunde007

+0

您正在通過該查詢的'$ s_id'的價值是什麼? –

+0

嘗試'mysqli_fetch_assoc()'而不是'mysqli_fetch_array()'並使用'if($ records_b_o_s> 1)'去除'='。您正在檢查它是否也等於1. –

回答

0

謝謝大家爲你的時間和你的答案!

原來我在while()循環內做了一些愚蠢的事情。在某些時候,我正在改變$ result變量的值而不會注意到它!現在代碼正常工作!