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