2011-07-20 122 views
0

我在我的php頁面中使用了內部連接。問題是當我在mysql查詢瀏覽器中啓動查詢時,它獲取近6行。並且都是正確的,但是當我在我的php頁面中使用它時,它只能讀取一行。這是隻有一個值..內部連接問題

while($row=mysql_fetch_array($result1)) 
{ 
while ($resultpoet = mysql_fetch_array($poet)) { 
    ?> 
    <tr> 
     <td><?= $iCounter?> 
      . </td> 
     <td><? if(($row['roman']=="")&&($row['hindi']=="")) { ?> 
      <?=$row['name'] ?> 
      <? } else { ?> 
      <a href="sview.php?title=<?=$row['sid'] ?>"> 
      <?=$row['name'] ?> 
      </a> 
      <? } ?></td> 
     <td width="216"><? 

if($resultpoet['pstatus']!='u') 
print '<a href="pview.php?title='.$resultpoet['pname'].'">'.$resultpoet['pname'].'</a>'; 
else 
print $resultpoet['pname']; 

      ?> 



      </td> 
     <td width="135"><?=$row['category'] ?></td> 
     <td width="67"><a href="songtitle_action.php?title=<?=$row['sid'] ?>"> Edit </a> 
      <input name="check[]" type="checkbox" value="<?=$row[s_id]?>" id="checkbox_<?=$row[sid]?>"></td> 
     <td width="75"><? if(($row['roman']=="")&&($row['hindi']=="")) { ?> 
      <a href="song_add_lyrics.php?title=<?=$row['sid'] ?>"> Add Lyrics</a> 
      <? } ?></td> 
    </tr> 
    <? } 
      $iCounter++; 
     }?> 

回答

2

你只叫mysql_fetch_array一次,所以你只能得到一個行。

您需要改爲使用while進行迭代,併爲查詢返回的每個行執行輸出。這是一個非常簡單的例子:

$poet= mysql_query("SELECT p.name as pname, p.status as pstatus from poet p INNER JOIN song s ON p.pid=s.pid"); 
while ($resultpoet= mysql_fetch_array($poet)) { 
    if($resultpoet['pstatus']=='u') 
    print '<a href="pview.php?title='.$resultpoet['pname'].'">'.$resultpoet['pname'].'</a>'; 
    else 
    print $resultpoet['pname']; 
} 

退房the documentation for mysql_fetch_array,示例代碼闡述了這一原則。

+0

是的,我忘了這麼做......正確的..從一個小時以來一直困惑。 – Aditii

+0

因爲我在其他while循環中使用它,所以每次外部獲取值時,它都會獲取該特定列或元組的所有calue組。如何管理兩個while循環? – Aditii

+0

只要確保使用不同的變量名稱,就可以嵌套while循環。 :) –

2

你必須不斷的打電話fetch_array

while ($result = mysql_fetch_array($poet)) 
{ 
    /* do stuff with $result */ 
}