2011-07-17 3 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 запись с фамилией. Я не знаю, что-то не так с «пока». Пожалуйста, помогите мне.

+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

oh duh! Я полностью забыл об этом эхом! Большое вам спасибо RHSeeger. Теперь я смеюсь над собой :) –

+0

Разве вы не ошиблись при проверке страницы? Глядя на журнал, это мой первый шаг к отладке php. –

0

Anyways 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 и сделать с помощью БД.

Смежные вопросы