3

每次加载页面时如何显示 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

4 回答 4

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()。你会在那里找到更多的例子。

于 2013-04-19T22:20:15.307 回答
0

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

while ($aRow = mysql_fetch_array($aResult, MYSQL_ASSOC)) {
    echo $aRow['careername']; 
}
于 2013-04-19T22:20:33.460 回答
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

于 2013-04-19T22:23:01.283 回答
0

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

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

在受 CPU 限制的服务器上,这方面的收支平衡约为 ca。100行!

于 2013-04-19T22:30:18.577 回答