我正在尝试获取一组随机行而不重复任何BBDD,最后,代码告诉我问题......但是有一些错误......有人可以帮助我吗? P.D.错误在粗体线中。 (未定义的偏移量(在每次迭代中)) 提前致谢
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();
答案 0 :(得分: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();
答案 1 :(得分:1)
首先:
$ids[] = array(5);
不执行您认为的操作,它只是创建一个数组,其中一个元素的索引 0 且值 5 。
如果您只需要五个随机行,您可以使用MySql轻松完成:
SELECT * FROM Questions ORDER BY RAND() LIMIT 5;
答案 2 :(得分:0)
后:
$ids[] = array(5);
添加:
var_dump( $ids ); exit;
使用@joeframbach解决方案