0

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

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

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

谢谢

4

3 回答 3

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

但请注意,这会降低您的性能,尤其是在较大的桌子上。

旁注:不推荐使用 mysql_* 函数,请改用 mysqli_* 。

于 2013-06-11T19:27:46.307 回答
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)];

但是,如果您想要该条目的随机字段,则应该像 Bernhard Poiss 指出的那样使用array_rand 。

$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)];
于 2013-06-11T19:30:40.637 回答
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)];
于 2013-06-11T19:30:50.487 回答