PHP遍历每一行

PHP遍历每一行,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我试图显示数据库中每一行的信息。我有多行信息,我将使用这些信息输出到我的页面 我的桌子是这样的: id | collection | name | image ------------------------------- 1 | Col One |col-1 | url-1 ------------------------------- 2 | Col Two |col-2 | url-2 $sql = "SELECT * FROM collections"; $result

我试图显示数据库中每一行的信息。我有多行信息,我将使用这些信息输出到我的页面

我的桌子是这样的:

id | collection | name | image
-------------------------------
 1 |  Col One   |col-1 | url-1
-------------------------------
 2 |  Col Two   |col-2 | url-2
$sql = "SELECT * FROM collections";
$result = $link->query($sql);
$collections = mysqli_fetch_array($result, MYSQLI_BOTH);

$html = '<div class="collection" id="' . $collections["name"] . '"><div class="collection-hover">' . $collections["collection"] . '</div></div>';
echo '<div id="collectionsDiv">';
while ($row = $result->fetch_assoc()) {
    echo $html;
}
echo '</div>';
下面是我的代码当前的样子:

id | collection | name | image
-------------------------------
 1 |  Col One   |col-1 | url-1
-------------------------------
 2 |  Col Two   |col-2 | url-2
$sql = "SELECT * FROM collections";
$result = $link->query($sql);
$collections = mysqli_fetch_array($result, MYSQLI_BOTH);

$html = '<div class="collection" id="' . $collections["name"] . '"><div class="collection-hover">' . $collections["collection"] . '</div></div>';
echo '<div id="collectionsDiv">';
while ($row = $result->fetch_assoc()) {
    echo $html;
}
echo '</div>';
答案如下: & &

前两个只返回最后一行,而最后一行不起作用(我想MySqlResult可能已经贬值了。我试着用mysqli_result代替它,但它也不起作用)

我不确定我遗漏了什么

如果我使用mysqli_fetch_all,我如何获得每个项目的所有信息?有更好的方法吗?也许我也可以在$html变量中传递fetch_all数组ID,但我也不确定该怎么做


我对PHP非常陌生,所以如果这真的很简单,请原谅我

使用获取循环中的行。在循环中使用此函数返回的变量:

<?php
if (! $r = $link->query("SELECT * FROM collections")) {
    // handle error
}

echo '<div id="collectionsDiv">';

while ($row = $r->fetch_assoc()) {
    echo <<<EOS
    <div class="collection" id="{$row['id']}">
        <div class="collection-hover">{$row['collection']}</div>
    </div>
EOS
}

echo '</div>';

$r->free();


$ALLDATA
现在将拥有所有数据,您可以根据需要使用它。

@Ruslan的答案非常好。mysqli版本将是:

$sql = "SELECT * FROM collections";
$result=mysqli_query($link,$sql);
echo '<div id="collectionsDiv">';
while($row=mysqli_fetch_assoc($result)){
    echo <<<EOS
    <div class="collection" id="{$row["id"]}">
        <div class="collection-hover">{$row["collection"]}</div>
    </div>
EOS
}
echo '</div>';
$sql=“从集合中选择*”;
$result=mysqli\u查询($link,$sql);
回声';
while($row=mysqli\u fetch\u assoc($result)){

回显关于这一点的混乱,只需在第一个
while
块上获取整个结果,它将持续移动指针直到最后一行。如果在fetch
块上调用另一个
,它将只会导致
null
,在fetch
块时不需要多个
,并且不使用st光线
fetch_array
块之外,或者先将其放入容器(数组)中,将所有值放在那里,然后将该数组重用到代码的各个部分。我一次只运行一个while块。我没有特别说明这一点,但我测试了一个while块,其余的都被注释掉了。我尝试的每个while块只给出一个结果。这太神奇了,非常感谢。它按照它应该的方式工作,而且,是c当然,我只是把事情复杂化了。