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

3
每次页面加载时,我该如何显示3个随机值?目前,我使用以下代码一次只显示一个:
```html

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

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
欢迎!;) 此外,请注意,PHP开发人员已将mysql_*扩展标记为弃用。因此,建议您不要在代码中使用这些函数。您应该寻找替代方案,如PDOmysqli_* - hek2mgl

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


0

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

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

0

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

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

在 CPU 绑定服务器上,这个方法的平衡点是约100行!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接