使用php获取未在mysql数据库中显示的问题

时间:2012-07-18 16:17:27

标签: php random

我们在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);

?>

谁能告诉我什么是错的?

1 个答案:

答案 0 :(得分:0)

我可以看到一些错误:

  1. 您使用的是已弃用的mysql_*函数(与您的问题无关);
  2. mysql_fetch_array仅获取第一行(通常为一行),而不是所有行 结果集;
  3. 您没有在任何地方设置$randomIndex
  4. 就像现在一样,您需要遍历结果集并将所有答案添加到数组中。如果您切换到例如PDO,您可以使用fetchAll以您现在尝试的方式获得所有结果。

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