|
|
|
| Странно, но заметил, что MySQL возвращает не такое кол-во рядов, которое я "заказывал"...
<?php
//Например
$_GET['page'] = 2;
//Сколько должно вернуть
define("MSGS", 10);
//Страница
if(isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$page = 0;
}
//Если меньше нуля
if($page < 0) $page = 0;
//Если больше, чем возможно
if($page > intval($all/MSGS)) $page = intval($all/MSGS);
//LIMIT для запроса
$limit = ($page * MSGS).", ".($page * MSGS + MSGS);
echo($limit); //20, 30
$sql = mysql_query("SELECT * FROM `table` WHERE `fid` = '".$fid."' ORDER BY `id` ASC LIMIT ".$limit.";");
//Выводит 13 сообщений вместо 10
echo(mysql_affected_rows()."<br />\n"); ///13 (!)
?>
|
Выводится 13 сообщений, вместо десяти...Почему? Так как я все проверил, то получается виновата СУБД...Или в некоторых случаях 20 выводит... | |
|
|
|
|
|
|
|
для: Unkind
(05.11.2006 в 20:12)
| | Функция mysql_affected_rows() не используется для получения количества строк в результирующей таблице SELECT-запроса. Для этого обычно используют функцию mysql_num_rows()
<?php
echo mysql_num_rows($sql);
?>
|
PS Функция mysql_affected_rows() возвращает количество затронутых строк в случае DELETE, UPDATE и INSERT запросов. | |
|
|
|
|
|
|
|
для: cheops
(05.11.2006 в 22:04)
| | Ну вообще я сначала вручную посчитал...:)
То есть я не понимаю почему больше, чем надо сообщений выводится...А не результат функции mysql_affected_rows()...
А вот насчет того, что mysql_affected_rows() неправильно с SELECT работает - не верю. :)
Да, видел в документации вроде про это написано, но у меня всегда отлично работало...
P.S. Сами проверьте ;) | |
|
|
|
|
|
|
|
для: cheops
(05.11.2006 в 22:04)
| | А ошибка-то была в LIMIT. Надо было получить "20, 10", "30, "10" и т.д., а я раньше думал "20, 30", "30, "40" надо. И не поправили :(
:)) | |
|
|
|