mysql_fetch_array和while循环丢失了第一个结果

时间:2011-11-30 21:05:17

标签: php mysql loops

我对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总是缺少第一个结果。

2 个答案:

答案 0 :(得分:3)

一些可能性:

  • 您正在查看同一数据库的不同副本
  • 您已经开始在while循环
  • 之前提取结果集

另外,您应该构建一个标记链接数组,然后使用implode ... while(){ $tag_links[] = '<a href...';} print implode(', ', $tag_links);

输出它们

答案 1 :(得分:1)

您需要将代码更改为:

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

请注意,我借此机会更正了标记输出,还有许多其他输出HTML的方法,但在大多数情况下这更容易阅读。

如果您无法发现问题,我将您的$ url更改为$ tags ['url'],因此我输出了您从mysql_fetch_array()

获得的$ tag中的URL

干杯