php - MySQL RAND() 不工作,总是得到相同的结果

标签 php mysql database random

我有这个 MySQL 查询:

while ($x <= 9) {
   $data_1 = "SELECT scene FROM star WHERE star LIKE '%".$star."%' ORDER BY RAND() LIMIT  1";
   $result_1 = mysql_query ($data_1) OR die("Error: $data_1 </br>".mysql_error());

   while($row_1 = mysql_fetch_object($result_1)) {
      $scene = $row_1->scene;
      $x = $x + 1;
   }
} 

我想每次执行时都获得一个新场景,但我总是得到相同的场景。有什么问题吗?有人可以给我一些指示,我必须朝哪个方向搜索吗?

最佳答案

您需要做的是将随机种子绑定(bind)到每一行,并每次绑定(bind)一个新种子。为此,请向表分配一个随机值作为别名 transient 列,然后从中进行选择。

SELECT s.scene as scene FROM (
    SELECT stars.scene as scene, RAND() as seed 
      FROM stars
     WHERE star LIKE '%".$star."%' 
  ORDER BY seed
) s
LIMIT  1;

使用PDO它看起来像这样:

function getScene() {
    $sql = 'SELECT s.scene as scene FROM ( SELECT stars.scene as scene, RAND() as seed FROM stars WHERE star LIKE '%:star%' ORDER BY seed ) s LIMIT  1;';
    $query = $this->db->prepare($sql);//'db' is the PDO connection
    $query->execute(array(':star' => "Allison Brie"));

    foreach ($conn->query($sql) as $row) {
        print $row['scene'] . "\t";
    }
}

我不确定你想用其余的代码来完成什么,但它看起来大多很糟糕。

关于php - MySQL RAND() 不工作,总是得到相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514682/

相关文章:

ruby-on-rails - rails ActiveRecord : legacy table without primary key shows nil for result?

php - MySQL 时间序列数据库,跟踪数量/价格/数据历史记录 — 仅当新值与前一个值不同时才插入新行?

mysql - 在一列中显示数据库中的多个值

mysql - 连接查询以获取与一列中的 2 个值匹配的记录

database - 数数来自多个表的记录;甲骨文数据库

sql - 如何在 SQL Server 上强制 SELECT 阻塞?

javascript - 如何使用 php 文件中的 GET 来获取我在 .js 文件中声明的变量?

php - laravel 会自动添加分组依据吗? Laravel toSql 与正在运行的查询的奇怪行为。

php - 基于另一个下拉菜单的下拉菜单项

mysql - 如何连接静态值并将它们用作 GROUP BY 标识符?