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
Форумы портала PHP.SU :: Версия для печати :: Limit и mysql_num_rows()
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Limit и mysql_num_rows()

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

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


Подсчитываю вот так
где $res - это результат выполнения запроса.
Но в результате у меня переменная $num_string всегда равна количеству всех записей в таблице, а не количеству записей возвращенных запросом.
Я видимо чего то не понимаю? Подскажите.
2. Champion - 22 Апреля, 2011 - 21:07:19 - перейти к сообщению
А можно настоящий кусок кода?
3. OrmaJever - 22 Апреля, 2011 - 21:13:14 - перейти к сообщению
KonstantinK по логике если вы выбираете строки с первой по пятую то количество и будет 5. Или я не прав?
Хотя если например выбирать 0,200 и в таблице меньше 200 записей то это имеет смысл.
4. KonstantinK - 22 Апреля, 2011 - 21:43:12 - перейти к сообщению
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
5. EuGen - 22 Апреля, 2011 - 21:45:17 - перейти к сообщению
Сделайте var_dump($query); - уверен, узнаете много нового
6. KonstantinK - 22 Апреля, 2011 - 22:34:57 - перейти к сообщению
EuGen Запрос формируется правильно и дает правильные результаты. Я проверял.
В принципе я решил задачу по другому, но хотелось бы все-таки понять почему предыдущее решение работало неправильно.
7. EuGen - 23 Апреля, 2011 - 10:28:22 - перейти к сообщению
Если стоит LIMIT 0,5 то все будет отображаться правильно (количеством не более тогО, что указано в LIMIT). Видимо, не правильно формируется запрос все-таки.
8. KonstantinK - 23 Апреля, 2011 - 17:53:07 - перейти к сообщению
EuGenОтображение действительно происходит правильно , а вот вопрос в том какой результат дает тот код что я выше выложил?
9. Champion - 23 Апреля, 2011 - 18:25:08 - перейти к сообщению
KonstantinK пишет:
вот вопрос в том какой результат дает тот код что я выше выложил?
Ну на этот вопрос можно ответить выполнив код.
По идее он должен выдать ошибку, потому что перед LIMIT находится таинственный апостроф и еще я не очень уверен, может ли в константе (CONNECT) храниться указатель на ресурс.
А если без ошибок, то результат должен равняться Num_string или меньше. По-другому не может быть. Вроде.
10. EuGen - 23 Апреля, 2011 - 19:51:14 - перейти к сообщению
Champion пишет:
и еще я не очень уверен, может ли в константе (CONNECT) храниться указатель на ресурс.

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

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

 

Powered by ExBB FM 1.0 RC1