0

我将 PHP 与 Access 数据库一起使用。此代码运行良好,并显示 34 个问题。我想随机化问题的显示顺序,但该RAND()功能不适用于 Access。我想对数组进行洗牌,但语法不正确。任何帮助,将不胜感激。

$info2 = "SELECT * FROM CCNAATQuestions";
$rs2=odbc_exec($conn1, $info2);

while ($row = odbc_fetch_array($rs2)) {

    echo "<strong>" . $row["Question"] . "</strong>";

}
4

4 回答 4

3
SELECT * FROM [tableName] ORDER BY rnd(INT(NOW*id)-NOW*id)

尝试上述方法,其中 id = 您的主键列

于 2013-04-10T13:58:41.880 回答
1
$rows = array();
while ($row = odbc_fetch_array($rs2)) {

$rows[]="<strong>" . $row["Question"] . "</strong>";

}

shuffle($rows);
于 2013-04-10T13:58:31.767 回答
1
$info2 = "SELECT * FROM CCNAATQuestions";
$rs2=odbc_exec($conn1, $info2);

$questions = array();

while ($row = odbc_fetch_array($rs2))
{
    $questions[] = $row;
}

shuffle($questions);

foreach ($questions as $row)
{
    echo "<strong>" . $row['Question'] . "</strong>";
}

使用 PHP 的随机播放:http: //php.net/manual/en/function.shuffle.php

于 2013-04-10T14:00:42.873 回答
0

您必须先获取所有行,然后才能对其进行洗牌:

$rows = array();
while ($row = odbc_fetch_array($rs2)) {
    $rows[]= $row;
}

shuffle($rows);
foreach ($rows as $row) {
    echo "<strong>" . $row["Question"] . "</strong>";
}

您应该看看@Dave 的解决方案,因为它将使用 ACCESS 功能。不幸的是,我无法测试它,因为我手头没有 Windows 系统

于 2013-04-10T13:58:51.893 回答