我有一个 SQL 查询给出了大约 100+ 个结果,我想打乱前 20 个结果(其他 80+ 个应该保持 SQL 查询选择它们的顺序)。现在最好的方法(我不想增加 SQL 负载,所以没有 ORDER BY 等)是将结果放在一个数组中,对数组进行切片,将切片的 20 个结果洗牌,放回去并显示它们.但是,我不确定如何使用准备好的语句来做到这一点。有什么指点吗?
$array = $stmt -> fetch();
没有得到我希望的结果。这不会创建包含结果的数组。您可以在下面找到代码的相关部分:
$stmt->prepare($query);
$stmt->bind_param('ssii', $dienstenpage, $huidigegemeente, $startpoint, $limit);
$stmt->execute();
$stmt->bind_result($prepid, $prephoofdrubriek, $prepplaats, $prepbedrijfsnaam, $prepgemeente, $prepbedrijfsomschrijving, $prepbedrijfsslogan, $prepstraatnaam, $prephuisnummer, $preppostcode, $preptelefoonnummer, $prepfax, $prepemail, $prepwebsite, $prepbedrijfslogo, $prepdubb);
$stmt->store_result();
$numrows = $stmt->num_rows;
while($stmt->fetch()) {
this displays all the results...
}
最佳答案
使用fetchAll
获取包含所有行的数组。然后,执行此操作:
$first20 = array_splice($allResults,0,20);
shuffle($first20);
array_splice($allResults,0,0,$first20);
这个答案广泛使用了 array_splice()
,非常实用的功能!
关于php - 随机播放前 20 个准备好的语句结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23642344/