【问题标题】:mysql_fetch_array and while loop lost first resultmysql_fetch_array 和 while 循环丢失了第一个结果
【发布时间】:2011-11-30 21:05:17
【问题描述】:

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

【问题讨论】:

  • IMO 你打印所有结果,但是第一个 cicle "$url" 是空的,然后,在回显之后,你设置 $url=$tags['url'];所以你错过了第一行和最后一行。请参阅@Mathieu 代码来做正确的事
  • 我已经改进了这个,谢谢。

标签: php mysql loops


【解决方案1】:

几种可能性:

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

附带说明,您应该构建一个标签链接数组,然后使用 implode 输出它们...while(){ $tag_links[] = '&lt;a href...';} print implode(', ', $tag_links);

【讨论】:

  • 谢谢Kenaniah,我在其他行有不同的副本,当我删除这条行时问题就消失了。我不知道 db 的结果只能使用一次。
【解决方案2】:

您需要将代码更改为:

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

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

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

干杯

【讨论】:

  • 感谢您的快速响应,我试试这个。
  • 只是为了确保,如果我是为您的问题提供答案的人,为什么将另一个标记为答案?
  • 我都改进了,因为我的代码中有不同的副本,而且带有 echo 的代码很糟糕。两个答案是正确的,但我只能标记一个答案。
猜你喜欢
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2012-08-30
  • 2014-07-17
相关资源
最近更新 更多