| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > MySQL: не работает запрос с FOUND_ROWS() |
| Автор: Perl_sapiens 7.4.2008, 15:24 | ||||
Привет. Вот код пхп:
А вот результат:
Что не так, кто знает? В phpMyAdmin все прекрасно выполняется |
| Автор: skyboy 7.4.2008, 15:58 |
| кто тебе сказал, что mysql_query поддерживает multistatesment-запросы? тебя обманули. чтоб выполнять несколько запросов в одном вызове функции, используй mysqli. в то же время, ничего не мешает использовать для mysql_query: для выборки и для вызoва found_rows() |
| Автор: Perl_sapiens 7.4.2008, 16:08 |
| Э... неочень понял последнюю твою фразу... И по поводу mysqli - |
| Автор: Feldmarschall 7.4.2008, 16:20 |
| Perl_sapiens, не надо пихать два запроса в один вызов mysql_query надо сделать два вызова. |
| Автор: Perl_sapiens 7.4.2008, 16:30 | ||
Сделал:
В $numrow[0] содержится 30, а я ожидаю число 81. ----- Вот когда в phpMyAdmin выполняешь вышеуказанный запрос, то он еще умудряется попутно узнать Сколько_Всего_Записей_получилось_в_этом_запросе: Показывает записи 0 - 29 (81 всего, Запрос занял 0.0121 сек). Вот как мне это сделать самому? На др. форуме сказали это юзать: SELECT FOUND_ROWS();, но как видите, выдает че-то не то... |
| Автор: Perl_sapiens 7.4.2008, 16:54 |
НЕ, тогда эт точно не подойдет, т.к. покажет только число отображенных записей, а не сколько их действительно найдено |
| Автор: skyboy 7.4.2008, 16:55 |
| mishaSL, нет, я имел в виду SQL-функцию http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows, которая, в отличие от php'шной mysql_num_rows() возвращает количество строк, которое было бы выбрано, если бы не ограничение по limit. Perl_sapiens, в select должна быть директива http://dev.mysql.com/doc/refman/4.1/en/select.html. у тебя она где? |
| Автор: Feldmarschall 7.4.2008, 16:55 |
| Perl_sapiens, а на др. форуме не сказали, что в основном запросе надо писать SQL_CALC_FOUND_ROWS? по поводу же пхпмайадмина, если так уж хочется делать, как он, то это не запрещено: руками отрезать от запроса LIMIT и смотреть, сколько строк вернет всего mishaSL, я не думаю, что он имел в виду mysql_num_rows =) |
| Автор: Perl_sapiens 7.4.2008, 17:09 | ||||
Хорошо. А теперь представь, что строк не 81, а 4млн. Эт долго будет и тупо.
Нет))) Тупо сказали и всё, замолчали. Только на Винграде я получаю быстро ответы(эт честно, без "лизаний") skyboy, спс за разъяснение. Всё заработало как надо. |
| Автор: Feldmarschall 7.4.2008, 17:13 |
| тем не менее, если текст между select и from заменить на count(*), а именно так, насколько мне известно, поступает пхпмайадмин, получится умно и быстро. |
| Автор: mishaSL 7.4.2008, 17:17 | ||
Сори, не вник до конца в тему Perl_sapiens, как вариант и без особых проблем, делаешь 2 запроса: 1. COUNT(*) - считаешь сколько там строк 2. выбираешь поля которые тебе надо с LIMIT Добавлено через 4 минуты Perl_sapiens, если еще представите структуру таблиц и описание что вы хотите получить, то можно еще и запрос попробовать оптимизировать |