gpt4 book ai didi

PHP:从 MySQL 数据库检索多行

转载 作者:行者123 更新时间:2023-11-29 22:30:08 24 4
gpt4 key购买 nike

我有一个带有评论的 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代替而不是mysqli_fetch_array

不同的函数会返回什么?

mysql_fetch_row

此函数将返回一行,其中的值将按照 SQL 查询中定义的顺序出现,并且键的范围将从 0 到比所选列数少 1。

mysql_fetch_assoc

此函数将返回一行作为关联数组,其中列名称将是存储相应值的键。

mysql_fetch_array

该函数实际上会返回一个数组,其中 mysql_fetch_row 和 mysql_fetch_assoc 的内容合并为一个。它将同时具有数字键和字符串键,使您能够以最简单的方式访问数据。

It is recommended to use either _assoc or _row though.

这段代码应该可以工作。

$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>';
}

关于PHP:从 MySQL 数据库检索多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com