Доброго времени суток уважаемые программисты! Делаю запрос PHP: SELECT * FROM users далее PHP: echo В таблице 10 записей, но упорно выводит только 9. Помогите понять почему? И как с этим бороться?
Вангую, что выводите через do ... while. Делайте просто через while. А на будущее, хорошо бы код показывать, чтобы не гадать.
С кодом MySql думаю все понятно, а вот код вывода на страницу: PHP: <table> <?php while ($row_history = mysql_fetch_array($show_history)) { echo ('<tr> <td>'.$row_history[xxx].' </td> <td>'.$row_history[xxx2].' </td> </tr>' ); }; ?> </table> К сожалению DO здесь не при чем
Это не весь код, относящийся к проблеме. Посмотрите код до цикла - возможно, что выше вы уже "разфетчили" результат запроса. То есть, у вас может быть что-то в этом роде: PHP: $show_history = mysql_query("SELECT * FROM users"); $row_history = mysql_fetch_array($show_history); while ($row_history = mysql_fetch_array($show_history)) { echo ('<tr> <td>' . $row_history[xxx] . ' </td> <td>' . $row_history[xxx2] . ' </td> </tr>' ); }; Такую ошибку зачастую можно увидеть у "учеников" Попова (гореть ему в программерском аду). А еще, пора напрочь вычеркнуть из памяти расширение mysql_*
Ссори, привожу полный код запроса к БД: PHP: $res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']); $userRow=mysql_fetch_array($res); $username = $userRow['username']; $show_history = mysql_query("SELECT * FROM test WHERE username = '$username' ORDER BY `date`"); $result_show_history = mysql_fetch_array($show_history); Далее PHP: <table> <?php while ($row_history = mysql_fetch_array($show_history)) { echo ('<tr> <td>'.$row_history[how].' </td> <td>'.$row_history[date].' </td> </tr>' ); }; ?> </table> Пожалуйста помогите разобраться, вот прям очень надо.
$row_history[how] - заключайте в кавычки, то есть так: $row_history['how']. Вы просто не видите Notice, так как у Вас нет никакой отладки. За место mysql_ используйте mysqli_ И совет используйте mysqli_fetch_assoc за место mysqli_fetch_array