1

我试图为从数据库返回的每个图像分配一个 id。然后将id放入img id中。id 需要来自返回的数据库行数的总数。

<?php 
while ($result  = mysql_fetch_assoc($query)) {
$imgURL = $result['imageUrl'];
$imgID = mysql_num_rows($query);

for ($i=0; $i <= $imgID; $i++) { 
}

echo"<img id =\"$i\" src=\"uploads/$imgURL\"/>";
}

?>

我得到的回报是图像是从数据库中显示的,但 img id 不是序列号(即 1、2、3 等),它只是返回给我的总数。我怎样才能让它为每个返回的图像分配一个单独的数字?

欢迎所有帮助。谢谢!

4

4 回答 4

0

你需要把你的回声放在你的 for 循环中:

for ($i=0; $i <= $imgID; $i++) { 
    echo "<img id =\"$i\" src=\"uploads/$imgURL\"/>";
}

编辑:顺便说一句,您可能不想以这种方式识别您的图像。根据您的应用程序逻辑,查询中的记录顺序可能不一致。每条记录在数据库中都应该有一个唯一的 ID,并且该值比迭代计数更可取。

于 2012-11-20T20:34:02.087 回答
0

你有一个错误的地方括号。我已经为你重写了:

<?php 
while ($result  = mysql_fetch_assoc($query)) {
    $imgURL = $result['imageUrl'];
    $imgID = mysql_num_rows($query);

    for ($i=0; $i <= $imgID; $i++) { 
        echo "<img id =\"$i\" src=\"uploads/$imgURL\"/>";
    }
}
?>

除非 ID 来自数据库中的字段,否则您可能还会遇到一些一致性问题。如果您的查询没有排序,则不能保证任何特定的排序。最常见的纠正方法是创建另一个名为“id”的字段,并为其赋予 auto_increment 属性。这样,它将为您提供一个永远不会改变的唯一序列号。您也可以按此编号排序。

于 2012-11-20T20:35:16.460 回答
0

您甚至不需要计算行数或有多个循环。只需让$iwhile 循环的每次通过都会递增。

$i = 0;
while ($result = mysql_fetch_assoc($query)) {
    $imgURL = $result['imageUrl'];
    echo '<img id ="' . $i . '" src="uploads/' . $imgURL . '" />';
    $i++;
}
于 2012-11-20T20:35:33.887 回答
0

你应该做这样的事情。您所做的事情完全没有用,因为您在同一行中一次又一次地做同样的事情:

<?php
$imgID = 0;
while ($result  = mysql_fetch_assoc($query)) {
$imgURL = $result['imageUrl'];
echo"<img id =\"$imgID\" src=\"uploads/$imgURL\"/>";
$imgID = $imgID + 1;
}

?> 
于 2012-11-20T20:37:45.020 回答