php - 随机播放前 20 个准备好的语句结果

标签 php mysql sql

我有一个 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/

相关文章:

mysql - SQL错误: 'database.table.field isn' t in GROUP BY

MySQL查询以获取用户未加入的所有社区

sql - 扫描CSV文件后生成DDL SQL创建表语句

php - 另一个数组内的 stdClass 对象数组

php - 显示MYSQL计数结果

php - 尝试将 MYSQL 查询分成两部分

sql - 有没有更简单的方法来为 PostgreSQL 重写 SQL Server 查询?

用于检查事件冲突的 MySQL 查询

php - 扩展类和 protected 数据

php - PHALCON PHP - 基于用户配置文件的不同 View