Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Limit и mysql_num_rows()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
KonstantinK
Отправлено: 22 Апреля, 2011 - 20:23:31
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Вот какой вопрос. Я хочу подсчитать кол-во строк которые возвращаются запросом вот такого вида
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` LIMIT 0,5


Подсчитываю вот так
где $res - это результат выполнения запроса.
Но в результате у меня переменная $num_string всегда равна количеству всех записей в таблице, а не количеству записей возвращенных запросом.
Я видимо чего то не понимаю? Подскажите.
 
 Top
Champion Супермодератор
Отправлено: 22 Апреля, 2011 - 21:07:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




А можно настоящий кусок кода?
 
 Top
OrmaJever
Отправлено: 22 Апреля, 2011 - 21:13:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




KonstantinK по логике если вы выбираете строки с первой по пятую то количество и будет 5. Или я не прав?
Хотя если например выбирать 0,200 и в таблице меньше 200 записей то это имеет смысл.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
KonstantinK
Отправлено: 22 Апреля, 2011 - 21:43:12
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




OrmaJever Да вот и я так думал, но видимо не верно.

ChampionДа можно вот он
PHP:
скопировать код в буфер обмена
  1. $query = 'SELECT * FROM `' . $this->Name_table . '`
  2.                      ` LIMIT ' . $this->Start_num_string . ',' . $this->Num_string;
  3.                    
  4.                     $res = mysql_query($query, CONNECT);
  5.                    
  6.                     $num_string = mysql_num_rows($res);
  7.                     echo $num_string;

где как можно догадаться $this->Name_table -имя таблицы
$this->Start_num_string - стартовая позиция в LIMIT
$this->Num_string - конечная позиция в LIMIT

(Отредактировано автором: 22 Апреля, 2011 - 21:49:28)

 
 Top
EuGen Администратор
Отправлено: 22 Апреля, 2011 - 21:45:17
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Сделайте var_dump($query); - уверен, узнаете много нового


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
KonstantinK
Отправлено: 22 Апреля, 2011 - 22:34:57
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




EuGen Запрос формируется правильно и дает правильные результаты. Я проверял.
В принципе я решил задачу по другому, но хотелось бы все-таки понять почему предыдущее решение работало неправильно.
 
 Top
EuGen Администратор
Отправлено: 23 Апреля, 2011 - 10:28:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если стоит LIMIT 0,5 то все будет отображаться правильно (количеством не более тогО, что указано в LIMIT). Видимо, не правильно формируется запрос все-таки.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
KonstantinK
Отправлено: 23 Апреля, 2011 - 17:53:07
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




EuGenОтображение действительно происходит правильно , а вот вопрос в том какой результат дает тот код что я выше выложил?
 
 Top
Champion Супермодератор
Отправлено: 23 Апреля, 2011 - 18:25:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




KonstantinK пишет:
вот вопрос в том какой результат дает тот код что я выше выложил?
Ну на этот вопрос можно ответить выполнив код.
По идее он должен выдать ошибку, потому что перед LIMIT находится таинственный апостроф и еще я не очень уверен, может ли в константе (CONNECT) храниться указатель на ресурс.
А если без ошибок, то результат должен равняться Num_string или меньше. По-другому не может быть. Вроде.
 
 Top
EuGen Администратор
Отправлено: 23 Апреля, 2011 - 19:51:14
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Champion пишет:
и еще я не очень уверен, может ли в константе (CONNECT) храниться указатель на ресурс.

Не может. Тип ресурс - не скалярен. Но что-то я надеялся, что автор сам до этого дойдет. Хотя, если соединение с базой - одно, и error_reporting установлен, скажем, в 0, то разницы видно не будет.
Champion пишет:
По-другому не может быть. Вроде.

Точно не может. Это следует из самого смысла LIMIT.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB