我用所有的个人资料做了一个页面。每隔3行,我在结果之间插入一个高级块。我在页面上有12行,每3行之间有4个高级块。我需要在每个foreach循环中显示mysql中premium='1'行的随机用户。
$sth = $db->prepare("SELECT count(*) as premiumCount FROM users WHERE premium='1'");
$sth->execute();
$answer = $sth->fetch();
$premium = $answer['premiumCount'];
$sth2 = $db->prepare("SELECT * FROM users WHERE active='1' AND block='0' ORDER BY premium DESC LIMIT 12");
$sth2->execute();
$result = $sth2->fetchAll();
foreach ($results as $answer) {
// getting user info
if ($premium > 0) {
$sth = $db->prepare("SELECT * FROM users WHERE premium='1' ORDER BY RAND()");
// getting premium user info
}
}
这个代码是工作,但它可以是2-3页相同的溢价块(我需要4个不同的块)。
1条答案
按热度按时间8wigbo561#
在使用一个查询(您可以添加
LIMIT 4
而不是在循环中重复选择。这样你就可以确定你不会有重复的。获取结果并将其存储在数组中,以及运行
"SELECT * FROM users WHERE premium='1'...
在循环内部查询时,请改用数组中的值。你可以用array_pop
以获取值,这样就不必使用计数器或类似的东西来跟踪您在数组中的位置。