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 :: Ошибка mysql_num_rows()

 PHP.SU

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


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

> Без описания
Extazy
Отправлено: 21 Мая, 2012 - 17:03:13
Post Id


Посетитель


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


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




Здравствуйте.
Имеется вот такой код:
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['num']))
  2. {
  3.         $num = $_GET['num'];
  4.  
  5.         $sql = mysql_query("SELECT * FROM `comments` WHERE `user_id` in(SELECT `id` FROM users WHERE `nickname` = '".$_GET['nickname']."') LIMIT $num, 5");
  6.     if(mysql_num_rows($sql) > 0)
  7.         {
  8.             while( $row = mysql_fetch_assoc($sql) )
  9.         {
  10.  
  11.             $comments_text[] = $row['text'];
  12.         }
  13.         }
  14. }

При выполнении запроса выдаёт ошибку:
PHP:
скопировать код в буфер обмена
  1. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\test1.ru\www\action.php on line 13

на 13 строке:


Подскажите где ошибка в коде?

(Отредактировано автором: 21 Мая, 2012 - 17:06:16)

 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Мая, 2012 - 17:05:32
Post Id



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


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


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




var_dump($sql);
 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 17:07:04
Post Id


Посетитель


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


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




DeepVarvar пишет:
var_dump($sql);

вывело

я не знаю что енто...
 
 Top
Green
Отправлено: 21 Мая, 2012 - 17:07:57
Post Id



Частый гость


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


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




Ошибка скорее всего в запросе, а не в функции.

Замените:
PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query("SELECT * FROM `comments` WHERE `user_id` in(SELECT `id` FROM users WHERE `nickname` = '".$_GET['nickname']."') LIMIT $num, 5");

На:
PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query("SELECT * FROM `comments` WHERE `user_id` in(SELECT `id` FROM users WHERE `nickname` = '".$_GET['nickname']."') LIMIT $num, 5") OR die(mysql_error());


Посмотрите результат...

(Отредактировано автором: 21 Мая, 2012 - 17:08:24)

 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 17:09:32
Post Id


Посетитель


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


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




Green пишет:
Ошибка скорее всего в запросе, а не в функции.

выдало:

PHP:
скопировать код в буфер обмена
  1. 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 ' 5' at line 1


ща подумаю..
(Добавление)
приведённый выше код находится в файле action.php. К нему происходит запрос с index.php через AJAX код:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  $(document).ready(function(){
  3.     $("#imgLoad").hide();  //Скрываем прелоадер
  4.  });
  5.  var num = 5; //чтобы знать с какой записи вытаскивать данные
  6.  $(function() {
  7.     $("#load div").click(function(){ //Выполняем если по кнопке кликнули
  8.     $("#imgLoad").show(); //Показываем прелоадер
  9.  
  10.                 $.ajax({
  11.                         url: "action.php", // Обработчик
  12.                         type: "GET",       // Отправляем методом GET
  13.                         data: {"num": num},
  14.                         cache: false,
  15.                         success: function(response){
  16.                                 if(response == 0){ // Смотрим ответ от сервера и выполняем соответствующее действие
  17.                                         alert("Больше нет записей");
  18.                                         $("#imgLoad").hide();
  19.                                 }else{
  20.                                         $("#content").append(response);
  21.                                         num = num + 5;
  22.                                         $("#imgLoad").hide();
  23.                                 }
  24.                         }
  25.                 });


Я так понимаю ajax код производит GET-запрос ввиде URL: /index.php?num

Значит в action.php должен передаваться $_GET['num'] равный 0.
Значит в mysql запросе вместо

подставляется



ОДНАКО "LIMIT $num, 5" вариант выдаёт ошибку :
PHP:
скопировать код в буфер обмена
  1. 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 ' 5' at line 1

а "LIMIT 0, 5" не выдаёт..

ПОЧЕМУ? Огорчение

(Отредактировано автором: 21 Мая, 2012 - 17:25:16)

 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Мая, 2012 - 17:26:06
Post Id



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


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


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




У вас $num гдето потерялся - его ищите.
 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 17:26:40
Post Id


Посетитель


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


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




да, точно.. вроде решил проблему.
спасибо Улыбка

(Отредактировано автором: 21 Мая, 2012 - 17:27:05)

 
 Top
redNek
Отправлено: 21 Мая, 2012 - 17:28:56
Post Id



Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query("SELECT * FROM `comments`, `users` ` WHERE `comments`.`user_id` = `users`.`id` AND `users`.`nickname` = '{$_GET['nickname']}' LIMIT {$num}, 5") or die(mysql_error());

Попробуй в одном запросе из двух таблиц информацию вывести

(Отредактировано автором: 21 Мая, 2012 - 17:35:37)

 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 17:42:21
Post Id


Посетитель


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


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




А кто-нибудь может подсказать почему при переходе по ссылке:
http://test1.ru/?do=user&nickname=NAME
условие:

выдаёт TRUE, значит 1.

А при запросе через мой AJAX код:
CODE (javascript):
скопировать код в буфер обмена
  1. $.ajax({
  2.                         url: "action.php", // Обработчик
  3.                         type: "GET",       // Отправляем методом GET
  4.                         data: {"num": num},
  5.                         cache: false,
  6.                         success: function(response){
  7.                                 if(response == 0){ // Смотрим ответ от сервера и выполняем соответствующее действие
  8.                                         alert("Больше нет записей");
  9.                                         $("#imgLoad").hide();
  10.                                 }else{
  11.                                         $("#content").append(response);
  12.                                         num = num + 5;
  13.                                         $("#imgLoad").hide();
  14.                                }
  15.                         }

функция if(response == 0) выдаёт TRUE, значит FALSE - какбудто if(mysql_num_rows($sql) равняется FALSE... ошибка гдето..

Понимаю почень много букав, но может ктото понимает и поможет..

(Отредактировано автором: 21 Мая, 2012 - 17:43:00)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB