我正在使用
$nameimg = mysql_query("SELECT *
FROM images
WHERE id='".$row['imgID']."'
ORDER BY RAND()
LIMIT 10");
显示所述用户的随机图像,但不显示随机图像。它只是通过时间提交显示。
答案 0 :(得分:0)
WHERE
条件通常会将结果集减少到一行,因此整个ORDER BY
子句变得无用。
您应该考虑您的架构并重新设计查询。
答案 1 :(得分:0)
你应该使用PHP来随机洗牌。如果您感兴趣的字段名为url
:
$req = mysql_query("SELECT url FROM images WHERE user_id = '{$row['userID']}'");
$images = array();
while($image = mysql_fetch_array($req)) {
$images[] = $image['url'];
}
shuffle($images);
$tenImages = array_slice($images, 0, 10);
修改。请考虑将PDO用于prepared statements。
更新。为什么不一次挑选十张图片?
$images = array();
while(count($images) < 10) {
$req = mysql_query("SELECT url FROM images WHERE user_id = '{$row['userID']}' LIMIT " . rand(1, 10000) . ", 1");
$image = mysql_result($req, 0, 0);
if(!in_array($image)) {
$images[] = $image;
}
}
Funnier(和更快)方式。提供here。
$ids = array();
for($i = 0 ; $i < 1000 ; $i++) {
$ids[] = rand(1, 10000);
}
$req = mysql_query("SELECT url FROM images WHERE user_id = '{$row['userID']}' AND id IN (" . implode(',', $ids) . ") LIMIT 10");