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

Форум MySQL

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

 

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

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

тема: Проблема с mysql_num_rows
 
 автор: Mefisto84   (28.01.2007 в 21:01)   письмо автору
 
 

Здравствуйте!
Вот такая у меня появилась проблема, после того как обрабатываю запрос функцией mysql_num_rows, выдается ошибка, но это только в том случае если запрос вернул 0. Если результат запроса больше нуля то проблем нет. Как же быть? Как можно этого избежать?
Вот в частности код с которым и получается эта беда

$i = mysql_num_rows(mysql_query("SELECT* FROM table LIMIT 2, -1"));
echo "<br>";
echo "<br>";
$content = $i;


Однако код вот такого вида не выдает ошибок, даже если возвращает ноль

echo mysql_num_rows(mysql_query("SELECT* FROM table WHERE delete_day<$date"));

В чем же тогда проблема?

Заранее благодарен.

   
 
 автор: Trianon   (28.01.2007 в 21:26)   письмо автору
 
   для: Mefisto84   (28.01.2007 в 21:01)
 

Что означает LIMIT 2, -1 ?

Результатом корректного SQL-запроса SELECT является не число, а дескриптор объект-итератора со строками результата.
Результатом некорректного запроса является false. Применять к нему mysql_num_rows() - само по себе ошибка.

   
 
 автор: Mefisto84   (28.01.2007 в 21:40)   письмо автору
 
   для: Trianon   (28.01.2007 в 21:26)
 

LIMIT 2, -1 означает что выбираем все записи из таблицы начиная со второй, ну вернее с третьей, вторая на считается. Так как бороться?

   
 
 автор: Trianon   (28.01.2007 в 21:57)   письмо автору
 
   для: Mefisto84   (28.01.2007 в 21:40)
 

mysql_query() не должен в реальном скрипте возвращать false.
если же в процессе отладки он его таки вернул, то вызывать надо не mysql_num_rows(), а mysql_error(). Обычно после этого всё становится ясно.

   
 
 автор: Mefisto84   (29.01.2007 в 18:49)   письмо автору
 
   для: Trianon   (28.01.2007 в 21:57)
 

Расскажите пожалуйста поподробнее, что именно нужно делать? Где вызывать? Что становится ясно? Как именно вообще избавиться от этой ошибки?

   
 
 автор: cheops   (29.01.2007 в 20:44)   письмо автору
 
   для: Mefisto84   (29.01.2007 в 18:49)
 

Преобразуйте ваш код
<?php
$i 
mysql_num_rows(mysql_query("SELECT* FROM table LIMIT 2, -1"));
?>

следующим образом
<?php
  $query 
"SELECT * FROM table LIMIT 2, -1";
  
$tbl mysql_query($query);
  if(!
$tbl) exit("Ошибка ".mysql_error());
  
$i mysql_num_rows($tbl);
?>

Что выводится?

   
 
 автор: cheops   (29.01.2007 в 20:49)   письмо автору
 
   для: Mefisto84   (28.01.2007 в 21:01)
 

У вас оператор SELECT и символ * лились - это не правильно между ними должен быть пробел.

   
 
 автор: Mefisto84   (30.01.2007 в 18:35)   письмо автору
 
   для: cheops   (29.01.2007 в 20:49)
 

сделал все как Вы сказали, вот какая ошибка у меня вылезла

Ошибка You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1' at line 1

Посмотрел версию Mysql, написана вот такая 4.1.14-log
Это что получается, что фишка с -1 не на всех версиях поддерживается? И если это так, то как тогда быть? Что делать?

   
 
 автор: cheops   (30.01.2007 в 22:22)   письмо автору
 
   для: Mefisto84   (30.01.2007 в 18:35)
 

А вам зачем -1 нужен?

   
 
 автор: Mefisto84   (31.01.2007 в 09:52)   письмо автору
 
   для: cheops   (30.01.2007 в 22:22)
 

Ну -1 мне нужен для того что бы выбрать все записи из таблицы начиная со второй, то есть до конца. В принципе это можно сделать и без -1, но тогда нужно делать еще один запрос к базе, где узнавать сколько же всего записей. Но раз есть такая возможность с -1, то почему она выдает ошибку? На локальной машине все работает. А все, не нужно, понял как это сделать по-другому. Спасибо.

   
Rambler's Top100
вверх

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