簡體   English   中英

PHP:從MySQL數據庫檢索多行

[英]PHP: Retrieve multiple rows from a MySQL database

我有一個帶有評論的MySQL數據庫,我正在嘗試使用以下代碼來檢索和顯示它們:

$retrieve_reviews = "SELECT * FROM reviews WHERE PRODUCT_ID = $pid";
$do_retrieve_reviews = mysqli_query($connection, $retrieve_reviews);
if(mysqli_num_rows($do_retrieve_reviews) > 0) {
    while($review_row = mysqli_fetch_assoc($do_retrieve_reviews)) {
        echo '<div class="review" style="width:50%;height:200px;float:left;background:blue;display:inline;">';
        echo '<h1>' . $review_row["RATING"] . ' out of 5</h1><br>';
        echo '<p>' . $review_row["REVIEW"] . '</p>';
        echo '<h4>' . $review_row["CUSTOMER"] . '</h4>';
        echo '<h5>' . $review_row["REVIEW_DATE"] . '</h5>';
        echo '</div>';
    }
}

但是,始終僅顯示數據庫中的最后一個條目。 我在這里想念什么? 感謝您的任何想法。

編輯:在將這些語句添加到while循環中測試代碼后:

var_dump(mysqli_num_rows($do_retrieve_reviews));
var_dump($review_row);

我得到以下結果:

int 3
array (size=6)
'REVIEW_ID' => string '10' (length=2)
'PRODUCT_ID' => string '10' (length=2)
'RATING' => string '4' (length=1)
'REVIEW' => string 'good board' (length=10)
'CUSTOMER' => string ' Jozo  Milan ' (length=13)
'REVIEW_DATE' => string '2015-04-26 00:00:00' (length=19)

int 3
array (size=6)
'REVIEW_ID' => string '11' (length=2)
'PRODUCT_ID' => string '10' (length=2)
'RATING' => string '2' (length=1)
'REVIEW' => string 'Very bad I dont know how can even sell that for so much.     Trash!' (length=63)
'CUSTOMER' => string ' Fero  Mrkva ' (length=13)
'REVIEW_DATE' => string '2015-04-26 00:00:00' (length=19)

int 3
array (size=6)
'REVIEW_ID' => string '12' (length=2)
'PRODUCT_ID' => string '10' (length=2)
'RATING' => string '4' (length=1)
'REVIEW' => string 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffff' (length=57)
'CUSTOMER' => string ' pooooo  hhhhhhh ' (length=17)
'REVIEW_DATE' => string '2015-04-26 00:00:00' (length=19)

哪個是正確的結果。 但是,僅顯示最后一個。 非常混淆。

使用mysqli_fetch_assoc instead mysqli_fetch_array

不同的功能會返回什么?

mysql_fetch_row

此函數將返回一行,其中值將按照SQL查詢中定義的順序排列,並且鍵的范圍從0到小於所選列數的一。

mysql_fetch_assoc

此函數將返回一行作為關聯數組,其中列名將是存儲相應值的鍵。

mysql_fetch_array

該函數實際上將返回一個數組,其中mysql_fetch_row和mysql_fetch_assoc的內容都合並為一個。 它同時具有數字鍵和字符串鍵,可讓您以最容易的方式訪問數據。

但是建議使用_assoc或_row。

此代碼應該工作。

$retrieve_reviews = "SELECT * FROM reviews WHERE PRODUCT_ID = $pid";
$do_retrieve_reviews = mysqli_query($connection, $retrieve_reviews);
if(mysqli_num_rows($do_retrieve_reviews) > 0) {
    $review_row = mysqli_fetch_assoc($do_retrieve_reviews);
    foreach($review_row as $reviews) {
        echo '<div class="review" style="width:50%;height:200px;float:left;background:blue;display:inline;">';
        echo '<h1>' . $reviews["RATING"] . ' out of 5</h1><br>';
        echo '<p>' . $reviews["REVIEW"] . '</p>';
        echo '<h4>' . $reviews["CUSTOMER"] . '</h4>';
        echo '<h5>' . $reviews["REVIEW_DATE"] . '</h5>';
        echo '</div>';
    }
}  else {
    echo '<div class="review" style="width:50%;height:200px;float:left;background:blue;display:inline;">
    No Reviews available for this product yet.
    </div>';
}

暫無
暫無

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

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