gpt4 book ai didi

foreach循环中的php mysql RAND()

转载 作者:行者123 更新时间:2023-11-30 21:38:11 24 4
gpt4 key购买 nike

我制作了包含所有配置文件的页面。每 3 行我在结果之间插入一个 Premium block 。我在页面上有 12 行,每 3 行之间有 4 个高级 block 。我需要在每个 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 个相同的高级 block (我需要 4 个不同的 block )。

最佳答案

根据需要选择尽可能多的随机高级用户在使用一个查询的循环之前(您可以将LIMIT 4 添加到您的查询中)而不是在循环内重复选择。这样您就可以确保不会有重复项。

获取结果并将它们存储在一个数组中,在循环中运行 "SELECT * FROM users WHERE premium='1'... 查询时,使用来自而是数组。您可以使用 array_pop 获取值,这样您就不必弄乱计数器或类似的东西来跟踪您在数组中的位置。

// getting premium user info
$sth = $db->prepare("SELECT * FROM users WHERE premium='1' ORDER BY RAND() LIMIT 4");
$sth->execute();
$premium = $sth->fetchAll();

foreach ($results as $answer) {
// getting user info
if ($premium) {
$premium_row = array_pop($premium);
}
}

关于foreach循环中的php mysql RAND(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com