【问题标题】:if statment need to work only one time when page will loadif 语句只需要在页面加载时工作一次
【发布时间】:2013-08-11 11:37:06
【问题描述】:

这是我目前使用的代码:

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 新手。任何人都请帮助我如何做到这一点。非常感谢任何形式的帮助。

【问题讨论】:

  • rand 函数已经运行一次。你到底想要什么?
  • 你得到它的期望是因为 rand() 函数不知道在前一页加载中选择了什么,它可能会在 (1,3) 之间选择一个数字很多次,它可能会有所不同,为了防止这种情况,您可以使用 $_SESSION 保存$id,然后创建更好的逻辑

标签: php database function random


【解决方案1】:

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

现在,您的问题是您的随机范围/可能太小,以至于它会返回相同的问题。浏览器不知道之前的问题 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']}" ;

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2021-11-25
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 2018-10-14
    • 1970-01-01
    • 2014-11-04
    相关资源
    最近更新 更多