Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Результат функции mysql_affected_rows()
 
 автор: Unkind   (05.11.2006 в 20:12)   письмо автору
 
 

Странно, но заметил, что 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 выводит...

   
 
 автор: cheops   (05.11.2006 в 22:04)   письмо автору
 
   для: 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 запросов.

   
 
 автор: Unkind   (05.11.2006 в 23:02)   письмо автору
 
   для: cheops   (05.11.2006 в 22:04)
 

Ну вообще я сначала вручную посчитал...:)
То есть я не понимаю почему больше, чем надо сообщений выводится...А не результат функции mysql_affected_rows()...
А вот насчет того, что mysql_affected_rows() неправильно с SELECT работает - не верю. :)
Да, видел в документации вроде про это написано, но у меня всегда отлично работало...

P.S. Сами проверьте ;)

   
 
 автор: Unkind   (26.12.2006 в 15:10)   письмо автору
 
   для: cheops   (05.11.2006 в 22:04)
 

А ошибка-то была в LIMIT. Надо было получить "20, 10", "30, "10" и т.д., а я раньше думал "20, 30", "30, "40" надо. И не поправили :(
:))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования