通常情况下,我会用前额来做这个。但我也需要一些东西,每一次它通过它时,它会增加1。这就是为什么我要使用which循环。但我根本无法让它发挥作用。前程回路工作正常。但是,当我应用while循环时,它不会做任何事情,或者只是创建无限多的正在显示的行。所以我在找人帮忙。可能是个很简单的解决办法,但我看不见。
$SQL = $pdo->prepare("SELECT id, title, img_src, rating FROM movie_db ORDER BY RAND() LIMIT 3");
$SQL->execute();
$r = $SQL->fetchAll(PDO::FETCH_ASSOC);
//while($r = $row){
foreach($r as $row){
//$result = mysql_query($query, $connection) or die (mysql_error());
$i = 1;
//while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
$title = $row['title'];
$img_src = $row['img_src'];
$rating = $row['rating'];
if ($i<=2){echo"<div class='featured_post left'>";}
elseif ($i=3){echo"<div class='featured_post left featured_post_last'>";}
$i++;我也尝试过使用do-while循环,但是结果根本无法显示,但它至少在那时使用了正确的代码。
发布于 2014-04-23 10:51:39
ORDER BY RAND()不是很有效。相反,我建议:
$qry = $pdo->query('
SELECT id, title, img_src, rating, @lim := @lim - 1
FROM movie_db, (SELECT @cnt := COUNT(*)+1, @lim := 3 FROM movie_db) init
WHERE RAND() < @lim / (@cnt := @cnt - 1)
LIMIT 3
');至于你的问题:
for($i = 1; $row = $qry->fetch(); $i = $i<2 ? $i+1 : 0) {
$id = $row['id'];
$title = $row['title'];
$img_src = $row['img_src'];
$rating = $row['rating'];
echo '<div class="featured_post left', ($i ? '' : ' featured_post_last'), '">';
}发布于 2014-04-23 10:29:42
elseif ($i=3)应该是elseif ($i==3)
i.e
if ($i<=2){echo"<div class='featured_post left'>";}
elseif ($i==3){echo"<div class='featured_post left featured_post_last'>";}
$i++;https://stackoverflow.com/questions/23241556
复制相似问题