За последние 24 часа нас посетили 17356 программистов и 1297 роботов. Сейчас ищут 1740 программистов ...

MySql выводит не все записи из таблицы.

Тема в разделе "Вопросы от блондинок", создана пользователем zlojnaxa, 10 июн 2016.

  1. zlojnaxa

    zlojnaxa Активный пользователь

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    Доброго времени суток уважаемые программисты!

    Делаю запрос
    PHP:
    1. SELECT * FROM users
    далее
    PHP:
    1. echo
    В таблице 10 записей, но упорно выводит только 9. Помогите понять почему? И как с этим бороться?
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Вангую, что выводите через do ... while. Делайте просто через while. А на будущее, хорошо бы код показывать, чтобы не гадать.
     
  3. zlojnaxa

    zlojnaxa Активный пользователь

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    С кодом MySql думаю все понятно, а вот код вывода на страницу:
    PHP:
    1. <table>
    2.                     <?php
    3.                     while ($row_history = mysql_fetch_array($show_history)) {
    4.                         echo
    5.                         ('<tr>
    6.                            <td>'.$row_history[xxx].' </td>
    7.                            <td>'.$row_history[xxx2].' </td>
    8.                          </tr>'
    9.                           );
    10.                     };
    11.                     ?>
    12.                 </table>
    К сожалению DO здесь не при чем
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Это не весь код, относящийся к проблеме. Посмотрите код до цикла - возможно, что выше вы уже "разфетчили" результат запроса. То есть, у вас может быть что-то в этом роде:

    PHP:
    1. $show_history = mysql_query("SELECT * FROM users");
    2. $row_history = mysql_fetch_array($show_history);
    3.  
    4. while ($row_history = mysql_fetch_array($show_history)) {
    5.   echo
    6.   ('<tr>
    7.  <td>' . $row_history[xxx] . ' </td>
    8.  <td>' . $row_history[xxx2] . ' </td>
    9.  </tr>'
    10.   );
    11. };
    Такую ошибку зачастую можно увидеть у "учеников" Попова (гореть ему в программерском аду). А еще, пора напрочь вычеркнуть из памяти расширение mysql_*
     
    zlojnaxa и denis01 нравится это.
  5. zlojnaxa

    zlojnaxa Активный пользователь

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    Ссори, привожу полный код запроса к БД:
    PHP:
    1. $res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']);
    2. $userRow=mysql_fetch_array($res);
    3. $username = $userRow['username'];
    4.  
    5. $show_history = mysql_query("SELECT * FROM test WHERE username = '$username' ORDER BY `date`");
    6. $result_show_history = mysql_fetch_array($show_history);
    Далее
    PHP:
    1.                 <table>
    2.                     <?php
    3.                     while ($row_history = mysql_fetch_array($show_history)) {
    4.                         echo
    5.                         ('<tr>
    6.                            <td>'.$row_history[how].' </td>
    7.                            <td>'.$row_history[date].' </td>
    8.                          </tr>'
    9.                           );
    10.                     };
    11.                     ?>
    12.                 </table>
    Пожалуйста помогите разобраться, вот прям очень надо.
     
  6. zlojnaxa

    zlojnaxa Активный пользователь

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    Спасибо! Это помогло.
     
  7. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    $row_history[how] - заключайте в кавычки, то есть так: $row_history['how'].
    Вы просто не видите Notice, так как у Вас нет никакой отладки.

    За место mysql_ используйте mysqli_
    И совет используйте mysqli_fetch_assoc за место mysqli_fetch_array