以下是我目前正在使用的代码:
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的新手。有人请帮我怎么做。任何形式的帮助都非常感谢。
答案 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']}" ;