PHP:从MySQL数据库检索多行
我得到了一个包含评论的MySQL数据库,我正在尝试使用以下代码检索和显示所有评论:PHP:从MySQL数据库检索多行,php,mysql,sql,database,Php,Mysql,Sql,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_r
$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>';
}
}
我得到了这样的结果:
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\u fetch\u assoc代替mysqli\u fetch\u数组的
不同的函数将返回什么
mysql_fetch_row
此函数将返回一行,其中的值将按照SQL查询中定义的顺序出现,键的范围从0到小于所选列数的1
mysql_fetch_assoc
此函数将返回一行作为关联数组,其中列名是存储相应值的键
mysql_fetch_array
此函数实际上将返回一个数组,其中mysql_fetch_row和mysql_fetch_assoc的内容合并为一个数组。它既有数字键,也有字符串键,可以让您以最简单的方式访问数据
但建议使用_assoc或_row
这个代码应该可以工作
$retrieve\u reviews=“选择*FROM reviews,其中PRODUCT\u ID=$pid”;
$do_retrieve_reviews=mysqli_query($connection,$retrieve_reviews);
如果(mysqli_num_rows($do_retrieve_reviews)>0){
$review\u row=mysqli\u fetch\u assoc($do\u retrieve\u reviews);
foreach($review\u行为$reviews){
回声';
回音“.$reviews[“RATING”]。“共5次
”;
回显“”.$reviews[“REVIEW”]。”;
回音“.$reviews[“CUSTOMER”]”;
echo'.$reviews[“REVIEW_DATE”].';
回声';
}
}否则{
回声'
尚未提供此产品的评论。
';
}
尝试mysqli\u fetch\u assoc
而不是mysqli\u fetch\u数组
请格式化您的代码!:)因为您只获取一个数据,所以像这样的查询将使用SELECT*FROM reviews
@SagarPanchal来获取所有产品的所有评论。然而,我试图只获取当前产品的那些。这就是为什么会有WHERE条件。你一定是把CSS搞砸了。离开div,但扔掉所有“风格”和“阶级”的东西。我想从这一点上你会没事的为什么OP要“试试这个”?请解释一下你做了什么,以及你为什么这样做,不仅是为了OP,也是为了SO的未来访客。好吧,我对stackoverflow还不熟悉。注意。通过您的代码,我得到了以下错误:警告:第66行…\details.php中的非法字符串偏移量“REVIEW”,每个项目都有一个警告(评级、审核、客户、审核日期)。你知道这意味着什么吗?是我遗漏了什么,还是你的代码只从数据库中获取了一行?我正在测试的这个特定产品的数据库中现在有3条评论,它只显示了最后一条。
mysql_fetch_array