За последние 24 часа нас посетили 20323 программиста и 1710 роботов. Сейчас ищут 1590 программистов ...

MAX(id) и Insert

Тема в разделе "PHP и базы данных", создана пользователем Julia, 13 июн 2010.

  1. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ни в коем случае.
    Поясняю.
    Записи не линейны.
    Допустим вы добавили запись 1, 2, 3, 4, 5.
    Потом вы посчитали запись 3 неактуальной и удалили её.
    Теперь у вас 4 записи 1, 2, 4, 5, но MAX(`id`) будет равен 5.
    Соответственно 5 записей, но в действительности их 4.

    Конец цикла должен рассчитываться или из результата возврата функции mysql_num_rows, или запроса с count(*).
    Можно просто работать с функцией mysql_fetch_*, которая автоматически вернет false, когда строки закончатся.
    Т.е:
    PHP:
    1. <?
    2.  
    3. while($row = mysql_fetch_object($query)) {
    4.  //TODO: ...
    5. }
    6.  
    7. ?>
    Сам столбец `id` должен быть первичным ключом.
     
  2. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    да действительно произойдет зацикливание
     
  3. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Зацикливания произойти не может =))
    Я понимаю ваше желание использовать умные словечки и всё такое (это естественно для всех людей), но всё-таки это неверно =)
    Произойдет не зацикливание, просто в С++ мы бы это назвали выход за границы массива.
    Цикл пройдет лишних "у" раз по элементам, которых нет.
     
  4. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    Спс за помощь, все заработало, даже не верится))
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Такая радость потому что курсовая сдана? =)
     
  6. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    Нет это не курсовая))
    Такая радость, потому что мучаюсь не первый день. Вроде простенькая задачка. С С\С++ знакома, а вот с синтаксисом php и sql не очень.
     
  7. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    Рано обрадовалась. На Денвере действительно все работает. Стала переносить в инет, вот такая картинка

    PHP:
    1. $query1 = mysql_query("SELECT MAX(id) as `id` FROM `flats`");
    2. $id = mysql_fetch_object($query1)->id; //строка 73
    Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/../input3.php on line 73

    Версия Php на денвере PHP Version 5.2.4

    Версия PHP в инете PHP 4.1.0

    Проблема видимо в разнице версий, а как ее решить найти не могу. Подскажите пжл
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Заменить строку
    PHP:
    1. $id = mysql_fetch_object($query1)->id; //строка 73
    на следующую
    PHP:
    1. $id = mysql_fetch_assoc($query1);
    2. $id = $id["id"];
    С новым годом, Юль!
     
  9. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    Спс все получилось, сори что достала тупыми вопросами