0

这是我目前使用的代码:

if ( !isset($id)) {
    $id = rand (1, 3);
}

$con = mysql_connect("localhost","root","");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mycompany", $con);


$result = mysql_query("SELECT * FROM database WHERE id = '$id'");

if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}

$row = mysql_fetch_array($result);
echo "{$row['question']}" ;

我希望 rand 函数只在加载页面时工作一次。如果有人刷新页面,rand 函数将不起作用,因此访问者将再次遇到相同的问题。

我是 PHP 的新手。任何人都请帮助我如何做到这一点。非常感谢任何形式的帮助。

4

1 回答 1

-1

我还修改了您的代码,因为不推荐使用 mysql() 函数。我建议将这些方法替换为 mysqli() 方法。

现在,您的问题是您的随机范围/可能太小以至于它会返回相同的问题。浏览器不知道之前的问题 ID。您必须使用会话来传递它。

// store current question id in the session
session_start();
$id = 0;

if ( !isset($id)) {
    $oldID = 0;
    if(isset($_SESSION['questionID']) $oldID = $_SESSION['questionID'];

    // loop random
    do {
        $id = rand (1, 3);
    } while($id == $oldID);
    // store new id to session
    $_SESSION['questionID'] = $id;
}

$con = mysqli_connect("localhost","root","") or die ('Could not connect: ' . mysqli_error());
// when publishing i don't recommend to post the mysql error, don't forget to change it.
mysqli_select_db("mycompany", $con);

$result = mysqli_query("SELECT * FROM database WHERE id = '$id'");

if (!$result) {
    echo 'Could not run query: ' . mysqli_error();
    exit();
}


$row = mysqli_fetch_array($result);
echo "{$row['question']}" ;
于 2013-08-11T11:48:09.570 回答