2011-11-30 151 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

只是爲了確保,如果我是爲您的問題提供答案的人,爲什麼要將另一個標記爲答案? –