Foreach循环多次显示相同的行

时间:2016-07-20 13:04:16

标签: php loops foreach

我第一次尝试制作foreach循环时出现问题。

我的问题是,我只是想要调出两行来显示,哪种方式有效,尽管它们显示的次数与我表中的不同行一样多。

我的代码如下所示:

$sql = "SELECT * FROM webpages";
$result = mysql_query($sql);
$assoc_query = mysql_fetch_assoc($result);

<?php foreach ($assoc_query as $value) { ?>
<tr>
   <td>
     <div id='pageimg'><img src= <?php echo $assoc_query['pic'];?>  ></div>
   </td>
   <td>
     <div id="pagename"><?php echo $assoc_query['name']; ?> </div>
   </td>
</tr>
<?php } ?>

它在页面上显示如下:

/picture/ DAK
/picture/ DAK
/picture/ DAK
/picture/ DAK

希望你能帮助我:)。

5 个答案:

答案 0 :(得分:1)

<?php 
$sql = "SELECT * FROM webpages";
$result = mysql_query($sql);

$counter=0;
while($row= mysql_fetch_assoc($result))
{
    $assoc_query[$counter] = $row;
    $counter++;
}

foreach ($assoc_query as $value) { ?>
    <tr>
        <td>
            <div id='pageimg'><img src= <?php echo $value['pic'];?>  ></div>
        </td>
        <td>
            <div id="pagename"><?php echo $value['name']; ?> </div>
        </td>
    </tr>
<?php } ?>

答案 1 :(得分:0)

这不能用foreach循环完成,除非你只用limit条款或Where条款显示1个用户的信息,否则它是无用的

相反,你需要一个像这样的循环

<?php while ($assoc_query = mysql_fetch_assoc($result)) { ?>
<tr>
   <td>
     <div id='pageimg'><img src= <?php echo $assoc_query['pic'];?>  ></div>
   </td>
   <td>
     <div id="pagename"><?php echo $assoc_query['name']; ?> </div>
   </td>
</tr>
<?php } ?>

答案 2 :(得分:0)

而不是foreach,你会想要一段时间。你在这里做的是循环数组$ assoc_query的元素。

while循环将获得要使用的下一个结果集。

while($assoc_query = mysql_fetch_assoc($result)){
    //Do your thing
}

另请考虑从mysql_更新到mysqli_或PDO。您使用的是折旧的,并且新版本的安全性会增加。

答案 3 :(得分:0)

你应该这样做:

$sql = "SELECT * FROM webpages";
$result = mysql_query($sql);
while ($assoc_query = mysql_fetch_assoc($result)) {
?>
<tr>
   <td>
     <div id='pageimg'><img src= <?php echo $assoc_query['pic'];?>  ></div>
   </td>
   <td>
     <div id="pagename"><?php echo $assoc_query['name']; ?> </div>
   </td>
</tr>
<?php } ?>

那应该有用。但正如之前所说,你不应该像这样编码。像nerdlyist一样使用mysqli或PDO。

答案 4 :(得分:0)

@Nerdlyist

$sql = "SELECT * FROM webpages";
$result = mysql_query($sql);
$assoc_query = mysql_fetch_assoc($result);


<?php while ($assoc_query = mysql_fetch_assoc($result)) {
?>
<tr>
   <td>
     <div id='pageimg'><img src= <?php echo $assoc_query['pic'];?>  ></div>
   </td>
   <td>
     <div id="pagename"><?php echo $assoc_query['name']; ?> </div>
   </td>
</tr> 
<?php } ?>