Цикл в PHP не работает
$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++;
}
Я получаю пустой результат.
Если я эхо $num
, Я получаю "19", который является числом строк в моей базе данных. Если я эхо $rowPhysician['lastName']
просто чтобы проверить, получаю ли я записи, я получаю как минимум 1 запись с фамилией. Я не знаю, если что-то не так с "пока". Пожалуйста, помогите мне.
3 ответа
Решение
Вам не хватает эха, чтобы распечатать строки?
while($i < $num) {
echo "tr";
echo "td" . mysql_result($qPhysician,$i,"lastName") . "/td";
echo "td" . mysql_result($qPhysician,$i,"firstName") . "/td";
echo "/tr";
$i++;
}
В любом случае, повторять 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.
Технически, это не ответ, но проще показать код следующим образом:
// 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 и покончить с БД.