2011-07-17 61 views
0
$qPhysician = mysql_query("SELECT * FROM physicians"); 
$num = mysql_num_rows($qPhysician); 
$i=0; 
while($i < $num) 
{ 
    "<tr>"; 
    "<td>" . mysql_result($qPhysician,$i,"lastName") . "</td>"; 
    "<td>" . mysql_result($qPhysician,$i,"firstName") . "</td>"; 
    "</tr>"; 
    $i++; 
} 

我得到空白結果。PHP中環路不工作

如果我回顯$num,我得到「19」,這是我的數據庫中的行數。 如果我回應$rowPhysician['lastName']只是爲了測試我是否得到記錄,我至少得到1個姓氏的記錄。我不知道「while」是否有問題。請幫助我。

+0

你真的應該使用mysql_fetch_array。 mysql_num_rows通常要慢得多。 – cwallenpoole

+0

@cwallenpoole - 我將如何運行作爲替代?請代碼:)謝謝! –

回答

4

你是否缺少回顯以打印出字符串?

while($i < $num) { 
    echo "tr"; 
    echo "td" . mysql_result($qPhysician,$i,"lastName") . "/td"; 
    echo "td" . mysql_result($qPhysician,$i,"firstName") . "/td"; 
    echo "/tr"; 
    $i++; 
} 
+0

噢!我完全忘了那個回聲!非常感謝你RHSeeger。現在我在嘲笑自己:) –

+0

檢查頁面時,你沒有得到一些錯誤嗎?查看日誌是我調試php的第一步。 –

0

反正echo'ing HTML是不好的做法。更正確的輸出應該看起來像

... 
while($i < $num) :?> 
    <tr> 
     <td><?php echo mysql_result($qPhysician,$i,"lastName"); ?></td> 
     <td><?php echo mysql_result($qPhysician,$i,"firstName") ?></td> 
    </tr> 
<?php $i++; endwhile; 
... 

請注意,您也寫了關閉HTML錯誤。

+0

現在,編輯後,關閉標籤在你的問題是好的。 – Hnatt

+0

我試過這個,並得到一堆的錯誤。 –

+0

「一堆錯誤」是一個不好的描述。如果你告訴你有什麼錯誤信息,我可以幫忙。 – Hnatt

0

從技術上講,這不是一個答案,但它是更容易顯示的代碼是這樣的:

// first, only take the records you need -- each record adds more time to 
// query, so if you only need 2, only select 2. 
$query = mysql_query("SELECT lastName, firstName FROM physicians"); 

// mysql_fetch_assoc returns an associative array of all of the columns 
// mysql_fetch_row returns a numerically indexed array. 
// mysql_fetch_array returns an array with both numeric and string indexing. 
// they will all return FALSE when there are no more results in the query. 
while($arr = mysql_fetch_assoc($query)) 
{ 
    echo "<tr>"; 
    // Now, use array indexing. 
    echo "<td>" . $arr[ "lastName" ] . "</td>"; 
    echo "<td>" . $arr[ "firstName" ] . "</td>"; 
    echo "</tr>"; 
} 

這是一種非常罕見的情況是mysql_result實際上是一個更好的選擇 - 它通常是更好只需在PHP中填充幾個數組,然後使用數據庫完成。