This question already has answers here:
MySQL: Alternatives to ORDER BY RAND()
                                
                                    (7个答案)
                                
                        
                                5年前关闭。
            
                    
我正在建立一个广告系统,我想知道随机显示横幅广告的最佳方法是什么?我正在使用PHP和MySQL,但对MySQL的RAND()不满意。

最佳答案

最好使用MySQL的函数为您进行所有随机化处理……但是,如果由于未指定的原因而导致您的“不满意”,则可以使用这种方法。

$Query = $DB->prepare("SELECT ID FROM Tablename ORDER BY ID DESC LIMIT 1");
$Query->execute();
$Query->bind_result($MaxID);
$Query->fetch();
$Query->close();

$Random_ID = rand(0,$MaxID);
unset($Query);
$Query = $DB->prepare("/* Select your random banner WHERE ID=".$Random_ID."*/");
$Query->execute();
$Query->bind_result(/*Results to display*/);
$Query->fetch();
$Query->close();



// Continue to display the data pulled from the query


对于此示例,我使用了MySQLi ...但是,如您所见,使用PHP例如捕获随机数据是一个较长的过程。

长话短说...最好使用MySQL获取随机数据

10-02 01:15
查看更多