从mysql数据库中回显随机id号而不重复数字?

时间:2011-04-14 06:37:52

标签: php mysql random

如何在不重复数字的情况下回显mysql数据库中的随机ID号?

这是我的示例代码:

$query = mysql_query("SELECT * FROM store"); 
$number=mysql_num_rows($query); 

for ($count=1; $count<= $number ; $count++)
{

  $id = mysql_query ("SELECT id FROM store ORDER BY RAND() LIMIT $number");
  $id = mysql_fetch_assoc($id);
  $id = $id['id'];

  echo $id;

}

它将回显六个随机数,但是具有“1 1 3 2 4 5”的实例,其中1被回显两次而不是一次。提前谢谢

3 个答案:

答案 0 :(得分:5)

只需按rand订购结果并限制其数量,您的ID必须是唯一的:

SELECT * FROM store ORDER BY RAND() LIMIT 0,6

答案 1 :(得分:2)

问题是,你在循环内部做SELECT,而不是选择一次并循环结果。

$query = mysql_query("SELECT * FROM store"); 
$number=mysql_num_rows($query); 

$result = mysql_query ("SELECT id FROM store ORDER BY RAND() LIMIT $number");
while ($row = mysql_fetch_assoc($result)) {
    echo $row["id"];
}

BTW:SELECT *获取记录集的数量很难看,请改用<{1}}

答案 2 :(得分:0)

如果你要离开php,你可能会更好(更快,更容易,没有锁定问题)来随机化你的数字。循环中的SQL查询是反模式。