簡體   English   中英

mysql命令由rand PHP

[英]Mysql order by rand PHP

我在用

$nameimg = mysql_query("SELECT * 
                        FROM images 
                        WHERE id='".$row['imgID']."' 
                        ORDER BY RAND()    
                        LIMIT 10");

由所述用戶顯示隨機圖像,但不顯示隨機圖像。 它只是通過提交的時間顯示。

WHERE條件的ID檢查通常減少的結果設置為一列,所以整個ORDER BY子句變得無用。

您應該考慮自己的架構並重新設計查詢。

您應該使用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用於准備好的語句

更新。 為什么不一次選擇十張圖像?

$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;
    }
}

更有趣(更快)的方式。 在這里提供。

$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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM