foreach mysql行从查询中回显出带有行值的html

时间:2012-01-16 18:37:29

标签: php mysql

基本上我想要完成的是mysql查询中的foreach行,它打印出来自该行数据的html。这就是我所拥有的,它一直给我一个错误。

<?php

$shots = mysql_query("SELECT * FROM shots") or die(mysql_error());

while($row=mysql_fetch_array($shots))
$data[]=$row;


foreach($shots as $data)

  if (!empty($data)){

  $id = $data["id"];
  $shotby = $data["shot"];
  $passby = $data["pass"];
  $time = $data["time"];
?>


<div class="feedbody">

    <div class="title"><?php echo $shotby; ?></div>
    <div class="feed-data">: gets a pass from <span><?php echo $passby; ?</span> and he takes a shot!</div>
    <img class="dot" src="images/dot.png" />

</div>
<?php
}

}
?>

或类似的东西。任何人都可以帮助我指出正确的方向。我一直试图找到答案。

编辑:按要求添加错误。

Warning: Invalid argument supplied for foreach() in /home/content/93/7527593/html/fusionboard/includes/feed.php on line 7

5 个答案:

答案 0 :(得分:9)

首先,如果要按名称(而不是索引)访问数据,则需要将MYSQL_ASSOC作为第二个参数包含在mysql_fetch_array中,或者使用mysql_fetch_assoc。

不确定为什么要将MySQL结果复制到第二个数组只是为了稍后循环 - 你可以直接遍历结果:

<?php
$shots = mysql_query("SELECT * FROM shots") or die(mysql_error());
while($row = mysql_fetch_assoc($shots)) { ?>
<div class="feedbody">
    <div class="title"><?php echo $row["shot"]; ?></div>
    <div class="feed-data">: gets a pass from <span><?php echo $row["pass"]; ?></span> and he takes a shot!</div>
    <img class="dot" src="images/dot.png" />
</div>
<?php } ?>

发布错误消息后更新:原始代码中的错误是您首先完成并将每个结果行复制到$data,但是在您的foreach中您尝试了循环$shots(再次)并让它调用每个项目$data

您可能想要做的是foreach ($data as $item),然后从$item复制属性。

答案 1 :(得分:2)

这样的东西?

<?php
$shots = mysql_query("SELECT * FROM shots") or die(mysql_error());

while($row=mysql_fetch_assoc($shots))
{
  $id = $row["id"];
  $shotby = $row["shot"];
  $passby = $row["pass"];
  $time = $row["time"];
?>

<div class="feedbody">

    <div class="title"><?php echo $shotby; ?></div>
    <div class="feed-data">: gets a pass from <span><?php echo $passby; ?</span> and he takes a shot!</div>
    <img class="dot" src="images/dot.png" />

</div>
<?php
}
?>

答案 2 :(得分:1)

也许你需要另一个闭合支撑? (最后的另一个“}”,我的意思是)。

答案 3 :(得分:0)

您已将数据保存在$ data变量中,但您的foreach使用$ shots变量。

只需将其更改为foreach($ data为$ something)和$ something [“id”](例如)以检索值

答案 4 :(得分:-1)

您正在使用一个变量而不是另一个变量 和许多无用的代码。

虽然你只需要

<?php foreach($data as $row) { ?> 
<div class="feedbody"> 
    <div class="title"><?php echo $row['shotby'] ?></div> 
    <div class="feed-data">: 
        gets a pass from <span><?php echo $row['passby'] ?</span> and he takes a shot!
    </div> 
    <img class="dot" src="images/dot.png" /> 
</div> 
<?php } ?>