提问者:小点点

为什么mt_rand()不在此查询中工作?[重复]


我试图让我的网页从数据库中随机选择一个帖子,但它一直返回一个错误。错误将第三个查询作为bool而不是对象引用,因此代码有问题。我只是不知道是什么。P. S我知道代码的其余部分可能很草率,只是需要mt_rand函数的帮助。

<?php include('enter-message.php');
$query= $connect->prepare("SELECT MAX( id ) AS 'max_id' FROM userinfo")or die(mysqli_error($connect));;
$query->execute();
$query->bind_result($maximum);
while($query->fetch()){
//print_r($maximum);
}

$query= $connect->prepare("SELECT MIN( id ) AS 'max_id' FROM userinfo")or die(mysqli_error($connect));;
$query->execute();
$query->bind_result($minimum);
while($query->fetch()){
//print_r($minimum);
}

$request=$connect->prepare('SELECT * FROM userinfo ORDER BY mt_rand($minimum,$maximum) LIMIT 1');
if($request->execute()){
    while($request==$secret){
        echo("<div class='secrets-box'>");
        echo($secret['nickname']);
        echo($secret['secret']);
        echo("</div>");
    }

共2个答案

匿名用户

你应该试试这个:

$request = $connect->prepare( 'SELECT * FROM userinfo ORDER BY ' . mt_rand($minimum,$maximum) . ' LIMIT 1' );

更好的是:

$rand = mt_rand($minimum,$maximum);
$request = $connect->prepare( 'SELECT * FROM userinfo ORDER BY %s LIMIT 1', $rand );

匿名用户

您可以使用mysql rand()函数:

'SELECT * FROM userinfo ORDER BY rand() LIMIT 1'

将从userinfo返回随机行