使用PHP foreach获取mysql表数据

时间:2011-02-15 11:33:04

标签: php mysql foreach

我有1个数据库表包含行:

TABLE FROM预订:

attandee01  
attandee02  
attandee03  
attandee04  
attandee05  
attandee06

PHP代码:

$q = $db->query("SELECT * FROM bs_events
LEFT JOIN bs_reservations ON bs_reservations.id_event = bs_events.id");

while($r = $q->fetch_array(MYSQLI_ASSOC)):
   echo '<td>' . $r['attandee1'] . '</td>';
   echo '<td>' . $r['attandee2'] . '</td>'
   echo '<td>' . $r['attandee3'] . '</td>'
endwhile;

或者是否有任何简单的方法使用foreach来回显attandee1 - attandee10?

6 个答案:

答案 0 :(得分:4)

$q = $db->query("SELECT * FROM bs_events
LEFT JOIN bs_reservations ON bs_reservations.id_event = bs_events.id");

while($r = $q->fetch_array(MYSQLI_ASSOC)):
   foreach($r as $value) {
       echo '<td>' . $value . '</td>';
   }
endwhile;

应该回显每个表行的每个列值。

编辑:如果您只想要与会者:

$q = $db->query("SELECT * FROM bs_events
LEFT JOIN bs_reservations ON bs_reservations.id_event = bs_events.id");

while($r = $q->fetch_array(MYSQLI_ASSOC)):
   for($i = 1; $i < 11 $i++) {
       echo '<td>' . $r['attendee'.$i] . '</td>';
   }
endwhile;

答案 1 :(得分:1)

当然,你可以使用foreach,因为$r是一个常规数组,可以使用foreach()运算符进行迭代。你试过吗?

但是,查看字段名称,我怀疑您的数据结构存在严重的设计缺陷 似乎attandees应该存储在另一个表中。

您也可以考虑使用模板。直接从数据库循环打印数据是非常糟糕的做法。您必须先获取所有数据,然后才开始打印出来。

答案 2 :(得分:1)

好的是:

for($i=1; $i<11; ++$i) {
  echo "<td>".$r["attandee".$i]. "</td>";
}

但这就是专栏,你想要的是基于行的解决方案,我会使用类似的东西:

for($r=$q->fetch_assoc(); !is_null($r); $r= $q->fetch_assoc()) {
   echo "<td>".array_pop($r)."</td>"; // output the only element in the array?
}
$q->free(); // don't forget to free the memory of the result set!

答案 3 :(得分:1)

不知道我是否理解你的问题...这就是你要找的东西:

while($row = $q->fetch_array(MYSQLI_ASSOC)):
    foreach($row as $field){
       echo '<td>' . $field . '</td>';
    }
endwhile;

答案 4 :(得分:0)

不确定这是否是您正在寻找的,但请试一试:

while($r = $q->fetch_array(MYSQLI_ASSOC)) {
   foreach($r as $value) {
      echo '<td>' . $value . '</td>';
   }
}

答案 5 :(得分:0)

例如,您可以使用替代语法。

<table>
<?php foreach ($mysqli->query($sql) as $row ): ?>
<tr><td><?php echo $row['row_name1']; ?></td><td><?php echo $row['row_name2']; ?></td></tr>
<?php endforeach; ?> 
</table>