继上一个问题shown here之后,我想知道如何将下面的代码更改为'foreach'语句?任何帮助都非常感谢,S。
<div id="banner-wrap">
<div id="banner" class="gallery">
<ul class="galleryBar">
<?php
$homeB=mysql_query("select * from istable where fpGallery = '1' ORDER BY RAND() LIMIT 0, 5");
while($homeG=mysql_fetch_array($homeB)) {
$linkcode = $homeG['title'];
$linkcode = str_replace(" ","",$linkcode);
echo '
<li>
<a href="'.$wwwUrl.'images/'.$homeG['image'].'" rel="'.$linkcode.'">
<img src="'.$wwwUrl.'images/tn/'.$homeG['image'].'" width="75" height="55" alt="'.$homeG['title'].'" />
</a>
</li>
';
}
echo '</ul>';
echo '</div>';
while($homeGal=mysql_fetch_array($homeB)) {
echo '
<div id="'.$linkcode.'" class="overlay">
<h3>'.$homeGal['title'].'</h3>
<h4>'.$homeGal['location'].'</h4>
</div>
';
}
?>
</div>
答案 0 :(得分:2)
在这种情况下,您无法将while
替换为foreach
。 mysql_fetch_array / mysql_fetch_assoc只返回一行而不是传递的资源的整个结果集(如果连接资源的内部指针在最后,则返回false
)。
在您的情况下,如果您需要整个结果集,然后在foreach
中使用它,则始终可以在array
(使用while
)中获取整个结果集,并且然后使用array
使用foreach
(有关示例,请参阅无穷大答案)。如果你有一个巨大的结果集,这将花费更多的内存/减慢进程。
答案 1 :(得分:1)
您可以执行以下操作:
$data = array();
while($homeG=mysql_fetch_array($homeB)) {
$data[] = $homeG;
}
foreach($data as $row) {
// your code hre
}
但我给你的建议是拆分你的编程逻辑和查看逻辑/代码。您最好尝试创建模型视图控制器[http://en.wikipedia.org/wiki/Model - 视图 - 控制器]
或使用PHP框架(CakePHP,Zend Framework,CodeIgniter)
答案 2 :(得分:1)
您必须使用实现Iterator接口的自定义类封装数据库访问,或者删除mysql _ *()函数以支持另一个提供已实现此类接口的类的库,例如PDO
我相信这种变化虽然长远有趣,但在你目前的情况下却没什么意义。您应该首先熟练使用arrays。
答案 3 :(得分:0)
你无法摆脱while
循环,因为mysql_fetch
函数一次只能返回一行。
如果您真的想要一个foreach()
循环,可以使用while
循环和mysql_fetch
将数据填充到数组中,然后再执行foreach
循环在那个阵列上。这会给你一个foreach
,但它不会摆脱while
。
答案 4 :(得分:0)
while循环 foreach()
DB CREATE
- ID
- 标题
- HREF
- img
醇>
<?php
$this = array();
$db = mysql_query('SELECT * FROM `'.DB_PREFIX.'product` where id order by id asc', ConnectDb()); // ConnectDb() to PHP Deprecated: mysql_query() error fix
while($see=mysql_fetch_array($db)) {
$this[] = $see;
}
?>
<ul class="product">
<?php foreach ($this as $product) { ?>
<li><a href="<?php echo $product['href']; ?>" title="<?php echo $product['title']; ?>"><img src="<?php echo $product['img']; ?>" alt="<?php echo $product['title']; ?>"><?php echo $product['title']; ?></a></li>
<?php } ?>
</ul>