如果语句只需要一次加载页面就可以工作

时间:2013-08-11 11:37:06

标签: php database function random

以下是我目前正在使用的代码:

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的新手。有人请帮我怎么做。任何形式的帮助都非常感谢。

1 个答案:

答案 0 :(得分:-1)

我还调整了你的代码因为mysql() - 函数已被弃用。我建议将这些方法替换为mysqli() - 方法。

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

// 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']}" ;