2011-05-14 173 views
-1
$b = 1; 
$d = mysql_query("select *from 'table_name'"); 
while($b < 10){ 
    while($e = mysql_fetch_array($d)){ 
     echo $e['name_field']; 
    } 
    $b++; 
} 

我想循环输出,但我卡住了。我尝试过但仍然没有任何东西。 这样的事情:PHP中循环MySQL查询结果

<?php 
$a = 0; 
$b = 0; 
for($a=0;$a<10;$a++){ 
    for($b=0;$b<10;$b++){ 
     echo $b;   
    } 
} 
+2

为什么你有两个循环? – 2011-05-14 12:30:20

+0

除@ IgnacioVazquez-Abrams问题外,在查询中'* from'之间添加一个空格。 – ifaour 2011-05-14 12:37:42

+0

并确保你在表名称周围使用反引号!否则''table_name''是一个字符串:) – Darkzaelus 2011-05-14 12:39:50

回答

2

你不增加任何地方的$ b。它被设置为1并且从不增加,所以它总是小于10.

+0

我忘了$ b ++; – repickmukalw 2011-05-14 12:37:30

2

由于表名不应该在单引号中,所以您可以使用反引号。

,如果你想限制结果只显示10行查询添加LIMIT这应该是

$d = mysql_query("select * from `table_name` limit 10"); 

删除外环

while($e = mysql_fetch_array($d)){ 
    echo $e['name_field']; 
} 

编辑

您可能希望在结果显示10次。只需将查询放在外部while循环中。

$b = 0; 
while($b < 10) 
{ 
     $d = mysql_query("select * from `table_name`"); 
     while($e = mysql_fetch_array($d)) 
     { 
     echo $e['name_field']; 
     } 
     $b++; 
} 
2
$d = mysql_query("select *from `table_name` LIMIT 10"); // use back-ticks and limit in query 

while($e = mysql_fetch_array($d)){ 
    echo $e['name_field']; 
} 
3

单独*FROM通过的空间。对表名称使用反引号或不使用分隔符而不使用单引号。

如果你想限制你的结果,加LIMIT表达式查询:

SELECT * FROM `table_name` LIMIT 10 

然后遍历结果:

while($row = mysql_fetch_array($d)){ 
    echo $row['name_field']; 
} 
0

如果你的意思是你要输出“ name_field'为前9行(1 .. < 10),您可以使用:

$d = mysql_query("SELECT * FROM `table_name` LIMIT 9"); 
while ($e = mysql_fetch_array($d)) { 
    echo $e['name_field']; 
} 

但是,如果您要在循环结构中为所有行输出“name_field”(1 .. < 10),则只需在循环结尾添加以下两行:

mysql_data_seek($d, 0); 
    $b++; 

生成的代码是:

$b = 1; 
$d = mysql_query("SELECT * FROM `table_name` LIMIT 9"); 
while ($b < 10) { 
    while ($e = mysql_fetch_array($d)) { 
     echo $e['name_field']; 
    } 
    mysql_data_seek($d, 0); 
    $b++; 
}