2013-06-11 78 views
0

我试图从数据库中填充数据的数组中获取随机值。我从数据库中选择了一些产品并将它们显示在首页上,但每次页面重新加载时,我都需要显示不同的(随机)产品。从数据库中选择数组后,从数组中选择一个随机值

$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
$row2 = mysql_fetch_assoc($row); 

因此,我认为$ row2现在是一个数组,并具有我以前从数据库中选择的所有信息。我现在如何从该数组中选择一个随机“行”?

感谢

+0

你可以使数据库做的工作适合你,请参阅http://stackoverflow.com/questions/16928079/return-random-results-order-by-rand/16928464#16928464和http://stackoverflow.com/questions/16928019/random-shuffle-without-getting-相同的结果,再次/ 16928182#16928182。 – mzedeler

回答

0

如果你想选择一个随机项,你可以做这样的事情:

$myRows=array(); 
$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
while($row2 = mysql_fetch_assoc($row)) 
    $myRows[]=$row2; 

$randomEntry=$myRows[array_rand($myRows)]; 

如果你想该条目随机场虽然,你应该使用array_rand像伯恩哈德Poiss指出。

$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
$row2 = mysql_fetch_assoc($row); 
$randomField=$row2[array_rand($row2)]; 
2

您正在寻找array_rand,请参阅:http://php.net/manual/en/function.array-rand.php

例子:

$rand_key = array_rand($row2); 
echo $row2[$rand_key]; // your random 

您也直接从数据库中选择一个随机行:

SELECT * 
FROM anunt 
WHERE lichidareStoc = 0 
ORDER BY rand() 
LIMIT 1 

但请注意,这会减少你的perfo浪漫,尤其是在更大的桌子上。

侧面说明:mysql_ *功能已被弃用,使用mysqli_ *代替。

0

首先你要填充您的结果

$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
$rows = array(); 
while($rec = mysql_fetch_assoc($row)){ 
    $rows[] = $rec; 
} 

数组然后你就可以使用随机选择一个项目array_rand

$random = $rows[array_rand($rows)];