我想在PHP中提出一个关于“foreach循环”的问题。在下面的代码底部,“while”循环单独访问数组中的元素。如何使用“foreach”循环重写while循环的BODY?
<?php
require_once('MDB2.php');
$db = MDB2::connect("mysql://mk:mk@shark.company.com/mk");
if(PEAR::iserror($db)) die($db->getMessage());
$sql = "SELECT courses.ID,courses.Name,staff.Name
FROM courses,staff
WHERE courses.Coordinator=staff.id
and courses.ID = \"$course\"";
$q = $db->query($sql);
if(PEAR::iserror($q)) die($q->getMessage());
while($row = $q->fetchRow()){
echo "<tr><td>$row[0]</td>\n";
echo "<td>$row[1]</td>\n";
echo "<td>$row[2]</td></tr>\n";
}
}
?>
</table>
</body></html>
答案 0 :(得分:0)
也许:
echo "<tr>";
foreach( $row as $field => $value )
{
echo "<td> \"$value\" </td>";
}
echo "</tr>";
答案 1 :(得分:0)
正如Poitr Olaszewski所评论的那样。您需要获取整个集合才能使用foreach()
进行迭代。
这意味着代替整个while($row....
,您需要执行以下操作:
$data = $q->fetchAll();
foreach($data as $key => $val) {
// do what you need to here....
}
的 More reading -> Documentation for fetchAll() for MDB2.php 强>