id otdelen 1 Москва 2 Воронеж 3 Барнаул 4 Екатеринбург 5 Тула 6 Владивосток 7 Киев 8 Волгоград Почему когда я пишу Код (Text): $i=0; while($rows=mysql_fetch_assoc($sql1)){ $i++; } echo 'В таблице '.$i.' строк'; Он мне выводит "В таблице 7 строк" хотя их 8 ??
т.е. мне начальное id всегда делать 0 с пустыми данными? Иначе если выводить данные Код (Text): $sql= mysql_query("SELECT * FROM filial"); //Делаем запрос на отделения $result= mysql_fetch_array($sql); echo $result[0]; он пишет 1 а не 0
Код (PHP): $i=0; while($rows=mysql_fetch_assoc($sql1)){ $i++; } echo 'В таблице '.$i.' строк'; Я аж прослезился. Восхитительно! p.s. count()
Ну, если вы прослезились, то count() заставляет меня рыдать. Код (PHP): $sql = mysql_query("SELECT * FROM `table`"); echo mysql_num_rows($sql); // количество рядов результата запроса Но еще большая печаль от того, что до сих пор народ сидит на mysql_*-функциях работы с БД, когда они уже считаются устаревшими, с версии 5.5 будут вообще удалены, а рекомендуется использовать PDO и MySQLi
Ваше решение ничем не лучше. Допустим есть таблица на миллион записей. Нужно узнать точно их количество. По-вашему проще выгрузить всю таблицу в оперативку, чтобы потом вернуть количество полученных строк? Ребят, а SELECT COUNT(*) FROM table не лучше будет? Работает практически бесплатно.
В отношении вопроса ТС - нет, не будет. Ему надо узнать кол-во записей после выборки по какому-то определенному условию. Иначе, вопрос был бы аля "Как узнать общее количество записей в таблице". Это как бы раз. Мое решение - лучше хотя бы тем, что именно эта функция была и создана для таких задач. Это во-вторых. А count() тут - как пятая лапа собаке. Чтоб ей воспользоваться, как минимум надо "перепаковать" результирующий набор в массив, если что. Это в-третьих.
LOL что?) даже в случае доп. условия. движек пробежится по индексу и быстренько посчитает кол-во. никаких перепаковок никаких массивов делать никто не будет
Я про функцию php - count()! Я придерживаюсь установленного синтаксиса, посему COUNT() в MySQl отличается от синтаксиса php count().
стало быть ТСу интересно кол-во записей именно в таблице и, сдается мне, запрос у него - селект со звездочкой. И, стало быть, SELECT COUNT для него рулит.
Вообще, подсчет количества записей не самая очевидная задача на самом деле и тут скорее действовать надо исходя из ситуации, способов достаточно. Я лишь указал на count() как на общий метод подсчета строк, пхп или мускуль значения не имеет. Главное не считать количество вот так, пустым циклом )
Вот из-за таких "умников" как вы, пхп-программистов презирают ))) Roomlife, наверное у тебя действительно 7 строк. Сделай в своём цикле вывод Города, а заодно и $i, тогда всё будет понятно.
А зря. Попытку зарегать пользователя с уже занятым ником тоже пресекаете методом "выгрузить все ники в оперативку и, перебирая по одному, искать совпадение"? Если что-то можно спросить у базы, спрашивайте у базы. Вряд ли реализация ее механизмов на пхп будет удачнее того, что она умеет сама.
Осталось только начать холивар по поводу COUNT([*, id...]) ) Вообще, если человек считает количество записей циклом, то на лицо незнание других методов подсчета, отсюда и ссылка на count(). Непродолжительное гугление по этому вопросу приведет как пхпшному, так и мускльному варианту, а так другим смежным дисциплинам ) Для себя в качестве ответа я бы предпочел именно "пинок" в нужную сторону. з.ы. чисто из приведенного кода - таки да, в выборке оказалось 7 строк.
налицо, что человеку еще не рассказывали про отладку. он ждет ложного результата. какая в жопу эффективность! преждевременная оптимизация — зло! тестирование, тестирование и еще раз тестирование )))
только если не знаешь, что наделал. а мне кажется, что Your с самого начала дал правильный ответ. Строк семь по той же причине, по которой у программистов на каждой руке по 4 пальца, но если считать на двух сразу, то их получается 9.
Хм... а какая связь между количеством пальцев на руке и количеством итераций? Если у нас есть скажем массив на 8 элементов и мы считаем его размер по циклу как топикстартер, то результатом будет 8. То что индексы у него идут от 0 до 7 не имеет отношения к делу. p.s. с записями в таблице точно такая же штука ) если их 8 значит их 8.
цикл в первом посте считает арифметически правильно. проверить нетрудно, правда? да, так делать неоптимально, если в реальном цикле больше нет никакой работы кроме $i++.