如何从MYSQL表中显示3个随机值

时间:2013-04-19 22:18:08

标签: php mysql random

每次加载页面时,如何显示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,但这对结果没有影响。感谢

4 个答案:

答案 0 :(得分: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()的手册页。你会在那里找到更多的例子。

答案 1 :(得分:0)

你走在正确的轨道上。将您的LIMIT更改为“3”,然后循环显示所有结果:

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

答案 2 :(得分:0)

您应将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

答案 3 :(得分:0)

ORDER BY RAND() LIMIT n是一个恐怖表现杀手:它会计算表格中所有行的RAND(),然后扔掉最多。想象一下这对一百万行的表有什么作用。

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

在CPU绑定的服务器上的这种收支平衡是在ca. 100行!