【问题标题】:How to display 3 random values from MYSQL table如何从 MYSQL 表中显示 3 个随机值
【发布时间】:2013-04-19 22:18:08
【问题描述】:

如何在每次加载页面时显示 3 个随机值?此刻,我使用以下代码一次显示一个:

<?php
$sSQLQuery = "SELECT careername FROM careers ORDER BY RAND() LIMIT 1";  
$aResult = mysql_query($sSQLQuery);  
$aRow = mysql_fetch_array($aResult, MYSQL_ASSOC);  
$sQuoteOfTheDay = $aRow['careername']; 
echo $sQuoteOfTheDay;   
?>

我试过做 LIMIT 5 但这对结果没有影响。谢谢

【问题讨论】:

    标签: php mysql random


    【解决方案1】:

    对于要获取的每条记录,您都必须再次致电 mysql_fetch_assoc()

    所以,使用LIMIT 3,然后简单地遍历结果集。像这样:

    $sSQLQuery = "SELECT careername FROM careers ORDER BY RAND() LIMIT 3";  
    $aResult = mysql_query($sSQLQuery);  
    while($aRow = mysql_fetch_array($aResult, MYSQL_ASSOC)) {
        $sQuoteOfTheDay = $aRow['careername']; 
        echo $sQuoteOfTheDay; 
    }
    

    请参阅mysql_fetch_assoc() 的手册页。您会在此处找到更多示例。

    【讨论】:

    • 不客气! ;) .. 进一步注意 mysql_* 扩展已被 PHP 开发人员标记为弃用。因此,不建议您在代码中使用此函数。您应该寻找 PDOmysqli_* 的替代品
    【解决方案2】:

    你在正确的轨道上。将您的 LIMIT 更改为“3”,然后遍历所有结果:

    while ($aRow = mysql_fetch_array($aResult, MYSQL_ASSOC)) {
        echo $aRow['careername']; 
    }
    

    【讨论】:

      【解决方案3】:

      您应将 LIMIT 更改为 3 并遍历结果行。

      $sSQLQuery = "SELECT careername FROM careers ORDER BY RAND() LIMIT 3";  
      $aResult = mysql_query($sSQLQuery);  
      while ($aRow = mysql_fetch_array($aResult, MYSQL_ASSOC))
      {
          $sQuoteOfTheDay = $aRow['careername']; 
          echo $sQuoteOfTheDay; 
      }
      $aResult->free();
      

      最后别忘了释放$aResult

      【讨论】:

        【解决方案4】:

        ORDER BY RAND() LIMIT n 是一个恐怖的性能杀手:它会为表格中的所有行计算RAND(),然后丢弃大部分。想象一下这对一百万行的表有什么影响。

        最好的方法是获取行数(例如运行SELECT COUNT(*) FROM tablename;),然后使用该值计算三个索引,然后运行SELECT * FROM tablename ORDER BY primarykey LIMIT $index,1 三次。

        在 CPU 密集型服务器上的收支平衡约为 ca。 100 行!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-19
          • 1970-01-01
          • 1970-01-01
          • 2012-03-04
          • 2014-09-02
          • 2011-07-06
          • 2015-12-22
          相关资源
          最近更新 更多