mysql_num_rows() от запросов типа SELECT COUNT(*) FROM NAMES упорно выдаёт, что строк на единицу меньше!

php mysql


Примечание:
В базе, допустим, 2840 строк. В таблице есть поле id, автоинкрементное; mysql_num_rows от запросов типа SELECT COUNT(*) FROM NAMES упорно выдаёт, что строк 2839, то есть на единицу меньше! Приходится прибавлять единицу к этому результату. Что не так? :)

Примечание:
NAMES -- таблица

Примечание:
Про отсчет от нуля -- у меня тоже такое подозрение, но первое значение id -- единица. Но это для человека. А как считает MySQL? Похоже, что от нуля. Вот и вопрос -- почему от нуля?

Примечание:
Первое значение id выводится 1. Потом 2, 3, 4 и т.д.

Примечание:
В описании поля id стоит свойство not null и свойство auto_increment. Не может это как-то быть связано с принудительно поставленным not null?

Примечание:
Если бы было удалено, автоинкрементное поле пересчиталось бы автоматически. Или нет?

Примечание:
А если не пересчитывается, то что же теперь делать? Грохать поле id? Спасибо Вам!

Примечание:
Нашел, действительно, сбивается в самой середине, была удалена строка! Выяснил экспортом в ПО эл. таблиц. :)
Ответы:
Дайте угадаю: счет идет от нуля? :)
сделайте запрос SELECT * FROM NAMES ORDER BY id ASC
Если первым будет ноль, то все ясно.
Тогда остается только один вариант: значит где-то не хватает записи. Например, идет 1 2 3 5 6... а 4 было удалено.
mysql_num_rows выдает точное кол-во записей в таблице. +1 делать не нужно
Может стоит всё-таки узнать результат запроса, вместо того чтобы странные функции вызывать? И я не понимаю, почему у вас не выводится всё время единица, может ещё где-то косяк?
Нет, не пересчитывается.
Автоинкремент просто хранит значение current_id и следующую запись делает с current_id+1 значением.
Он не следит за записями. current_id можно менять вручную, если требуется "подвинуть" счетчик.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.