2011-11-30 155 views
1

我有问题mysql_fetch_array()while循环。我有查询:mysql_fetch_array和while循环丢失的第一个结果

$tagsquery = mysql_query("SELECT `url` FROM `tags`, `mapa-tagow`, `statusy` WHERE `tags`.`id` = `mapa-tagow`.`tag-id` AND `statusy`.`id` = `mapa-tagow`.`article-id` AND `tags`.`tag` ='$tag' ORDER BY `url` ASC ") or die("ERROR: Tags doesn't exist."); 

,并导致while循环:

while($tags = mysql_fetch_array($tagsquery)) { 
    echo "<a href='tags.php?url=$url'>$url</a>, "; 
} 

当测试在phpMyAdmin此查询我还有一个结果,比我在PHP中获得。我不知道为什么PHP总是缺少第一个结果。

+0

IMO打印所有结果,但第一cicle“$网址”是空的,然后,在回声后,你设置$ url = $ tags ['url'];所以你错过了第一个和最后一个行。请参阅@Mathieu代码做对 –

+0

我已经改善了这一点,谢谢。 –

回答

3

几个可能性:

  • 您正在寻找在同一个数据库的不同副本
  • 你已经开始抓取您的结果早于您的while回路设置

在一个侧面说明,你应该建立自己的标签链接的数组,然后使用破灭输出他们... while(){ $tag_links[] = '<a href...';} print implode(', ', $tag_links);

+0

Thankyou Kenaniah,我在其他行有不同的副本,当我删除此行问题消失。我不知道db的结果只能使用一次。 –

1

您需要更改您的代码:

while($tags = mysql_fetch_array($tagsquery)) { 
    echo '<a href="tags.php?url='.$tags['url'].'">'.$tags['url'].'</a>, '; 
} 

请注意,我趁机纠正你的标签输出,还有很多其他的方式来输出HTML,但是这是更容易阅读在大多数情况下。

如果您不能当场这个问题,我改变了你的$网址到$标签[“网址”],所以我输出,你从mysql_fetch_array得到了$标签的URL()

干杯

+0

感谢您的快速响应,我试试这个。 –

+0

我改正了这一点,谢谢。 –

+0

只是为了确保,如果我是为您的问题提供答案的人,为什么要将另一个标记为答案? –