问题描述
|
如何在不重复数字的情况下从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 3 2 4 5”的实例,其中1回声两次而不是一次。提前致谢
解决方法
问题是,您在循环内部执行了一个“ 1”,而不是选择一次并在结果上循环。
$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\"];
}
顺便说一句:SELECT *
获取记录集的数量很难看,请改用SELECT count(id)
,只需按rand排序结果并限制其数量,您的ID必须是唯一的:
SELECT * FROM store ORDER BY RAND() LIMIT 0,6
,如果您使用的是php,则最好将其随机化(更好,更快,更简单,没有锁定问题)。循环内的SQL查询是一种反模式。