0

我有这个代码

    $query1 = "SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `participanti`";
    $offset_result = mysqli_query($connect,$query1);
    $offset_row = mysqli_fetch_object( $offset_result ); 
    $offset = $offset_row->offset;
    $query2 = "SELECT * FROM `participanti` LIMIT $offset, 1";
    $result = mysqli_query($connect,$query2);

    while( $row = mysqli_fetch_assoc($result) ){
        $winner = $row['id'];
    }

但是每次重新加载页面时,我都会得到一个不同的数字。如何只获得一次随机值并且该值保持不变,只要我愿意?

4

4 回答 4

1

为了让它永远存在,您很可能需要将获胜者存储在数据库中,例如:

$query1 = "SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `participanti`";
    $offset_result = mysqli_query($connect,$query1);
    $offset_row = mysqli_fetch_object( $offset_result ); 
    $offset = $offset_row->offset;
    $query2 = "SELECT * FROM `participanti` LIMIT $offset, 1";
    $result = mysqli_query($connect,$query2);

    while( $row = mysqli_fetch_assoc($result) ){
        $winner = $row['id'];
        $insert = "INSERT INTO `winners`('winner_id') VALUES('".$winner."')";
        $save = mysqli_query($connect,$insert);
    }
于 2013-09-03T11:33:27.640 回答
0

鉴于您正在选择一个随机数,实际上您每次运行时都会得到一个随机数。

没什么可说的,但你不能存储它:

<php
    // file 1

    session_start();
    $_SESSION['winner']=3;

?>

<php
    // file 2 (or reloaded page)

    session_start();
    echo($_SESSION['winner']);

?>
于 2013-09-03T11:29:57.280 回答
0

尝试使用会话对象以下列方式存储值:

if(!isset($_SESSION["num"]))
{
    $_SESSION["num"] = $winner;
}

如果之前没有设置会话,这将设置会话。

于 2013-09-03T11:30:27.890 回答
0

将值存储在会话中(或其他地方),并在再次检查之前检查它是否已存储;

if(!isset($_SESSION['winner'])) {

    $query1 = "SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `participanti`";
    $offset_result = mysqli_query($connect,$query1);
    $offset_row = mysqli_fetch_object( $offset_result ); 
    $offset = $offset_row->offset;
    $query2 = "SELECT * FROM `participanti` LIMIT $offset, 1";
    $result = mysqli_query($connect,$query2);

    while( $row = mysqli_fetch_assoc($result) ){
        $_SESSION['winner'] = $winner = $row['id'];
    }

}
于 2013-09-03T11:40:37.610 回答