以下代码显示随机数据库图像以及一个特定图像(这是我想要的)。如何在数据库查询后将这些结果随机播放,因为图像ID 11始终首先显示?我想在其他人之间随机显示图像ID 11。
我可以使用SHUFFLE()。如果是这样的话,我现在该把它放在哪里?
任何帮助都会受到赞赏,因为仍在学习PHP
感谢。
<?php
mysql_connect("", "", "") or die(mysql_error()) ;
mysql_select_db("images") or die(mysql_error()) ;
$photo=mysql_query("SELECT * FROM `profile_images` ORDER BY (ID = 11) DESC, RAND()
LIMIT 7");
while($get_photo=mysql_fetch_array($photo)){ ?>
<div style="width:300px;">
<img src="<? echo $get_photo['url']; ?>">
</div>
<? } ?>
答案 0 :(得分:8)
你可以将它们检索到php后随机播放。
$photos = array();
while ($get_photo = mysql_fetch_array($photo))
$photos[] = $get_photo;
shuffle($photos);
或者您可以使用子查询来执行此操作:
SELECT A.* FROM (
SELECT * FROM `profile_images`
ORDER BY (ID = 11) DESC, RAND()
LIMIT 7
) as A
ORDER BY RAND()
答案 1 :(得分:5)
如果你只是举例来说它不需要那么复杂
SELECT * FROM tbl_table ORDER BY RAND()
这将使您的数据随机化。如果你想限制你显示的图像数量,那么就把它放在:
SELECT * FROM tbl_table ORDER BY RAND() LIMIT 6
答案 2 :(得分:4)
rand()
对某些内容进行排序时,所有行都会获得唯一的随机值进行排序,以便子组不会排序。因此,如果存在rand()
,则在order by子句中使用更多列不起作用。因此我使用了别名结果并再次对其进行排序。查看查询
(SELECT *
FROM `profile_images`
WHERE id = 11
LIMIT 1)
UNION
(SELECT *
FROM (SELECT *
FROM `profile_images`
WHERE id != 11
ORDER BY Rand()
LIMIT 6) `t`
ORDER BY id DESC)
答案 3 :(得分:1)
首先选择ID为11的图像,然后使用UNION关键字
查询其余图像SELECT *
FROM Images
Where ID = 11
UNION
SELECT *
FROM Images
WHERE ID != 11