1

我试图在不重复任何 BBDD 的情况下获得一组随机行,最后,代码向我提出了问题……但有一些错误……有人可以帮助我吗?PD错误在粗体线中。(未定义的偏移量(在每次迭代中))提前致谢

mysql_query('SET CHARACTER SET utf8');
$sql=mysql_query("SELECT * FROM Questions");
$num_rows = mysql_num_rows($sql);
$max_value = (int )$num_rows;
$ids[] = array(5);
for ($i = 0; $i < 5; $i++) {
    $repetido = true;

    while($repetido == true){
    $repetido = false;
    $quest_id = rand ( 1, $max_value);//Obtiene el aleatorio

    for ($j = 0; $j < count($ids); $j++) {
        **if ($quest_id == $ids[$i])  $repetido = true;**

    }

    }
    $ids[$i] = $quest_id;
    $sql=mysql_query("SELECT * FROM Questions WHERE id_quest = $quest_id");
    $row = mysql_fetch_array($sql);

    $output[$i]=$row;
}



    echo(json_encode($output));
mysql_close();
4

3 回答 3

1
$sql = mysql_query("SELECT DISTINCT * FROM Questions ORDER BY RAND() LIMIT 5");
$output = array();
for ($i = 0; $i < 5; $i++) {
    $output[] = mysql_fetch_array($sql);
}

echo(json_encode($output));
mysql_close();
于 2012-04-14T16:33:23.843 回答
1

首先 :

$ids[] = array(5);

不做你认为它做的事,它只是用一个索引为0和值为5的元素创建数组。

如果您只需要五个随机行,您可以使用 MySql 轻松完成:

SELECT * FROM Questions ORDER BY RAND() LIMIT 5;
于 2012-04-14T16:34:28.333 回答
0

后:

$ids[] = array(5);

添加:

var_dump( $ids ); exit;

使用@joeframbach 解决方案

于 2012-04-14T16:40:33.687 回答