我从db中选择一些数据,我试图在html表上显示它们。 问题是当我刷新页面时,我得到的所有数据都复制在我的html表上。我一直试图谷歌/解决这个问题,但现在没有结果三天了。
<?php
//select and display all post on a table.
$query="SELECT DISTINCT * FROM posts order by post_id";
$results=mysqli_query($conn, $query);
while($row= mysqli_fetch_assoc($results)){
$data[] = array_unique($row);
echo "<tr>";
foreach($data as $result)
{
foreach($result as $key=>$value)
{
if($key=="post_content"){
continue;
} if($key=="post_img"){
$value="<img width='100px' src='../imgs/$value' class='img-responsive'>";
}
echo "<td>".$value."</td>";
}
echo "</tr>";
}
}
?>
答案 0 :(得分:1)
第一次while
循环运行时,这个:
$data[] = array_unique($row);
创建一个新数组并将行添加到它(我不认为array_unique
真正完成了任何事情。)
随着while
循环的每次后续迭代,您都会向$data
添加另一行。然后,使用:
$data
foreach($data as $result) {
这就是造成重复的原因。 $data
逐步从$results
获取每一行,然后重复循环。在while
循环结束时,$data
包含整个结果集。
删除额外的循环应该可以解决这个问题。
while ($row = mysqli_fetch_assoc($results)) {
echo "<tr>";
foreach ($row as $key => $value) {
if ($key == "post_content") {
continue;
}
if ($key == "post_img") {
$value = "<img width='100px' src='../imgs/$value' class='img-responsive'>";
}
echo "<td>".$value."</td>";
}
echo "</tr>";
}
答案 1 :(得分:0)
我认为您的array_unique
不是一个好主意,并且不起作用。我不知道你的参赛作品,但我认为将这个领域分组只需要一次就可以了。
<?php
//select and display all post on a table.
$query = "SELECT * FROM posts ORDER BY post_id GROUP BY xxxxx";
$results = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($results)) {
if ($key == "post_content") {
continue;
}
echo "<tr>";
if ($key == "post_img") {
echo "<td><img width='100px' src='../imgs/{$row['value']}' class='img-responsive'></td>";
}
echo "</tr>";
}
然后你不应该有重复的价值。
答案 2 :(得分:0)
我认为这是因为您在外部external.resources
内添加$data
,然后在内部迭代while
。
这是一些试图表明我的意思的伪代码:
$data
对于第一个db结果,$ data为空。你添加,显示,继续前进。第二个db结果,$ data仍然有第一个结果..你添加第二个结果,然后迭代它显示第一个结果(再次)和第二个结果。
第三次,数据结果为1和2,并且添加了3 ..然后显示所有的1,2和3。