如何在不重复数字的情况下回显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被回显两次而不是一次。提前谢谢
答案 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查询是反模式。