我一直在尝试使用PHP从我的数据库中显示数据。我的while循环继续运行。
function makeCollection(){
$images = mysql_query("select file_id from images where collection_id = 1");
//returns file_id
$fileIds = mysql_fetch_array($images, MYSQL_NUM );
//get file ids from $images into array
while($fileIds != false){
echo($fileIds[0]);
}
}
我有三个符合id = 1,2和3的对象(它是自动递增的)。不应该循环迭代然后在第三个之后停止?它只是为无穷大写'1'。
答案 0 :(得分:5)
您需要在循环条件内调用该函数,以便可以多次计算它。现在你只调用一次,这将告诉PHP只获取第一行。如果它不是假的(即MySQL返回至少一行),你的while循环将是无限的。
while (($fileIds = mysql_fetch_array($images, MYSQL_NUM )) !== false) {
echo $fileIds[0];
}
每次检查循环条件时调用它,PHP会在内部推进结果集指针,以便它可以覆盖结果集中的所有行。最终这个函数将返回false并终止循环。
答案 1 :(得分:3)
while($fileIds != false){
echo($fileIds[0]);
}
你没有做任何事情来推进循环内的循环字段。在循环之前你有一行设置$fileIds
,但事实上它只会被调用一次,因为它在循环之外。
你需要的是把它放在循环中,可能在while()本身内,如下所示:
while(($fileIds = mysql_fetch_array($images, MYSQL_NUM)) !== false) {
....
}
希望有所帮助。