Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Почему хранимая процедура выводит только первую строку? / 17 сообщений из 17, страница 1 из 1
14.05.2013, 11:52
    #38256349
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
Хранимая процедура

Код: sql
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE `catalog`()
BEGIN
    SELECT *
        FROM catalog
        WHERE parent_id = 0;
END$$



Вызываю ее в phpadminne
И она выводит только первую строку.

ПОЧЕМУ?
...
Рейтинг: 0 / 0
14.05.2013, 12:01
    #38256364
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
muraveyПОЧЕМУ?потому что запрос, что внутри неё находится, выводит только одну строку?
...
Рейтинг: 0 / 0
14.05.2013, 12:06
    #38256371
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
tanglir, Подскажите тогда
как вывести все и отсортировать по полю name.

Все пока тестирую в phpadmine.
...
Рейтинг: 0 / 0
14.05.2013, 12:16
    #38256393
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
muraveyкак вывести всеЧто именно вам надо вывести? если у вас в таблице только одна запись, удовлетворяющая условию parent_id = 0, то одна запись и должна выводиться...
...
Рейтинг: 0 / 0
14.05.2013, 12:20
    #38256406
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
tanglir...то одна запись и должна выводиться...
В том и дело что в таблице 4 записи удовлетворяющиеся parent_id = 0.
...
Рейтинг: 0 / 0
14.05.2013, 12:26
    #38256410
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
muravey, покажите вывод

Код: sql
1.
SHOW CREATE PROCEDURE `catalog`
...
Рейтинг: 0 / 0
14.05.2013, 12:31
    #38256418
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
tanglir,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Procedure 	
catalog 

sql_mode 	

Create Procedure 		 	
CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog`()
BEGIN
   SELECT name
       FROM catalog
       WHERE parent_id = 0;
END 	

character_set_client 
utf8 	

collation_connection
cp1251_bin 	

Database Collation
utf8_general_ci
...
Рейтинг: 0 / 0
14.05.2013, 12:40
    #38256428
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
muravey, странно. Единственное предположение - что чудит пхпмайадмин. Впрочем, как вы процедуру вызываете? Покажите запрос.
...
Рейтинг: 0 / 0
14.05.2013, 12:47
    #38256439
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
tanglir,
В том и дело что этот код я пока тестирую в пхпадмине.
И у него там есть выполнить процедуру, задаешь параметры и пошло выполнение.
...
Рейтинг: 0 / 0
14.05.2013, 12:51
    #38256452
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
В самом PHP коде

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
// Метод обертка для PDOStatement::fetchAll()
  public static function GetAll($sqlQuery, $params = null,
                                $fetchStyle = PDO::FETCH_ASSOC)
  {
    // Инииализируем возвращаемое значение в null
    $result = null;

    // Пытаемся выполнить SQL-запрос или хранимую проедуру
    try
    {
      // Получаем дескриптор базы данных
      $database_handler = self::GetHandler();

      // Подготавливаем запрос к выполнению
      $statement_handler = $database_handler->prepare($sqlQuery);

      // Выполняем запрос
      $statement_handler->execute($params);
      
      // Получаем результат
      $result = $statement_handler->fetchAll($fetchStyle);
    }
    // Генерируем ошибку если при выполнении SQL-запроса возникло исключение
    catch(PDOException $e)
    {
      // Закрываем дескриптор базы данных и генерируем ошибку
      self::Close();
      trigger_error($e->getMessage(), E_USER_ERROR);
    }

    // Возвращаем результаты запроса
    return $result;
  }



Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public static function GetCatalogParentId($parent_id, $sort)
    {
        $sql = 'CALL catalog_get_catalog_parent_id(:parent_id,
                                                   :sort)';
                                                   
        $params = array(':parent_id' => $parent_id,
                        ':sort' => $sort);
                        
        return DatabaseHandler::GetAll($sql, $params);
    }



Код: php
1.
$this->mCatalog = Catalog::GetCatalogParentId($this->mParentId, $this->mSortCatalog);



выводит все строки, но не сортирует по заданному значению $this->mSortCatalog.
...
Рейтинг: 0 / 0
14.05.2013, 12:53
    #38256456
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
А кто такой DatabaseHandler ?
...
Рейтинг: 0 / 0
14.05.2013, 12:56
    #38256462
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
miksoftА кто такой DatabaseHandler ?

Код: php
1.
2.
// Класс, предоставляющий базовую функциональность доступа к данным
class DatabaseHandler
...
Рейтинг: 0 / 0
14.05.2013, 12:58
    #38256465
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
muraveyвыводит все строкиЗначит, проблема в пхпмайадмине.muraveyно не сортирует по заданному значениюЛибо ставьте order by в запросе, либо спрашивайте на форуме по пхп , почему у вас этот пхпшный код не работает как надо.
...
Рейтинг: 0 / 0
14.05.2013, 13:04
    #38256474
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
tanglir, Пока ничего не помогло. Спасибо что откликнулись.
...
Рейтинг: 0 / 0
14.05.2013, 13:59
    #38256583
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
muraveymiksoftА кто такой DatabaseHandler ?

Код: php
1.
2.
// Класс, предоставляющий базовую функциональность доступа к данным
class DatabaseHandler

Ну вот в этом классе проблему и ищете. В коде MySQL-процедуры у вас ничего, связанного с сортировкой, нет. Следовательно код, выполняющий сортировку должен быть в классе.
...
Рейтинг: 0 / 0
14.05.2013, 14:08
    #38256598
muravey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
miksoft,

Спасибо за отклик.

Решение с сортировкой в другой теме тут
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.10.2016, 22:26
    #39319944
Ivan_Ko84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимая процедура выводит только первую строку?
С выводом 1 строки проблема, скорее всего в пхпмайадмине.
Аналогично через интерфейс выводит только 1 строку, но если выполнить скриптом: "call [procedure_name]()", то все корректно работает

Хоть и поздно, но вдруг еще пригодится)))
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Почему хранимая процедура выводит только первую строку? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]