【问题标题】:MySQL Order By Rand() gives 1 result not 24MySQL Order By Rand() 给出 1 个结果而不是 24
【发布时间】:2015-11-02 17:03:40
【问题描述】:

我想显示 24 个唯一 ID,但他只给了我 1 个: 这是我的php

    <?php $sql = "SELECT id 
                          FROM 15players 
                          ORDER BY RAND() 
                          LIMIT 24";    $result = mysql_query($sql) or die('Query failed: ' . mysql_error());        
$row = mysql_fetch_array($result);
echo $row['id'];         ?>

但是如果我在 phpmyadmin 中执行这条 SQL, 它返回我 24 个 id 那我做错了什么?

编辑: 得到了正确的答案!

<?php $sql = "SELECT id 
                      FROM 15players 
                      ORDER BY RAND() 
                      LIMIT 0,24";
    $result = mysql_query($sql) or die('Query failed: ' . mysql_error());
         while($row = mysql_fetch_array($result)) {
         echo $row['id'];
         }
         ?>

【问题讨论】:

  • 您只获取一个结果$row = mysql_fetch_array($result);,所以当然您只会显示一个 id....遍历整个结果集依次获取每个结果集 while($row = mysql_fetch_array($result)) { echo $row['id']; }
  • 但现在是 2015 年,是时候进入 MySQLi 或 PDO 的世界,而不是 11 月 12 日之后最新的 PHP 中不存在的旧的、已弃用的 MySQL 扩展
  • 请不要再使用mysql_*。如果不是 PDO,至少使用 mysqli_*php.net/manual/de/migration55.deprecated.php
  • 永远不要写ORDER BY RAND()

标签: php mysql random


【解决方案1】:

mysql_fetch_array 只返回需要循环遍历结果的 1 行。

while($row = mysql_fetch_array($result)) {
    echo $row['id'];
}

【讨论】:

  • 谢谢 :D 我怎样才能在每个 'id' 之间获得一个
  • echo $row['id'], '&lt;br /&gt;'; 我真的建议学习一些 PHP 基础知识
【解决方案2】:

如果通过查询获取多个结果,则需要对其进行迭代。

<?php 
$sql = "SELECT id 
FROM 15players 
ORDER BY RAND() 
LIMIT 24";    $result = mysql_query($sql) or die('Query failed: ' . mysql_error());        
while($row = mysql_fetch_array($result))
{
echo $row['id'];
}         
?>

另外 mysql_* 已弃用,开始使用 PDO。

【讨论】:

    【解决方案3】:

    mysql_fetch_array 一次只能获取一行。您需要遍历所有结果。

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
         echo $row['id']. '<br>';
    }
    

    您应该使用 mysqli 或 PDO。 mysql_ 在 PHP 5.5.0 中被弃用,并在 PHP 7.0.0 中被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2017-05-17
      • 2012-12-28
      • 2015-12-02
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多