0

我们在 MySQL 数据库中有一个问题列表,并希望它向用户显示一个随机批准的问题。当您单击随机按钮时,我们希望显示另一个随机问题,但不是用户已经看到的任何问题。

我正在尝试使用这样的东西(但它不起作用,只是给出一个空白页):

<?php

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("aldrig") or die(mysql_error());

$result = mysql_query("SELECT * FROM spg WHERE approved='1'") or die(mysql_error());
$answers = mysql_fetch_array($result);

start_session();

if (isset($_COOKIE["answers"]))
    $alreadyShownAnswers = json_decode($_COOKIE["answers"]);
else
    $alreadyShownAnswers = array();

$answerToShow = $answers[$randomIndex];
$alreadyShownAnswers[] = $answers[$randomIndex];
unset($answers[$randomIndex]);
$answers = array_values($answers);

echo "<div class='contentTitle'><h1>";
echo $answerToShow; 
echo "</h1></div>";

$_COOKIE["answers"] = json_encode(alreadyShownAnswers);

?>

谁能告诉我怎么了?

4

1 回答 1

0

我可以看到一些错误的地方:

  1. 您正在使用已弃用的mysql_*功能(与您的问题并不真正相关);
  2. mysql_fetch_array仅获取第一行(通常为一行),而不是结果集中的所有行;
  3. 你没有$randomIndex在任何地方设置。

就像现在一样,您需要遍历结果集并将所有答案添加到数组中。如果您切换到例如 PDO,您可以使用fetchAll您现在尝试的方式获取所有结果。

ORDER BY RAND()如果您的数据库不是太大而无法获得可以使用的已经随机排序的结果集,您也可以使用。

于 2012-07-18T16:22:17.810 回答