Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов ХП в DbSimple 
:(
    Опции темы
mlitkin
Дата 28.3.2008, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Не подскажите как в DbSimple вызывать ХП и получать от них результат выборки? Вот такой скрипт ругается:
Код

require_once "lib/DbSimple/config.php";
require_once "lib/DbSimple/Generic.php";
$db = DbSimple_Generic::connect("mysql://root:a@localhost/im_net");
$rows = $db->select("call SYS_GET_SYNC_TABLE_COLUMNS(1)");
foreach ($rows as $numRow => $row) 
    echo $row['NAME'];


Выпадает вот такая ошибка:
SQL Error: PROCEDURE im_net.SYS_GET_SYNC_TABLE_COLUMNS can't return a result set in the given context at C:\Apache\localhost\www\InetMarket.NET\test.php line 19
Array
(
    [code] => 1312
    [message] => PROCEDURE im_net.SYS_GET_SYNC_TABLE_COLUMNS can't return a result set in the given context
    [query] => call SYS_GET_SYNC_TABLE_COLUMNS(1)
    [context] => C:\Apache\localhost\www\InetMarket.NET\test.php line 19
)

PM MAIL   Вверх
Feldmarschall
Дата 28.3.2008, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



А что - если обращаться не через DbSimple, все отрабатывает, как надо?
Тогда, может быть, следует спросить на форуме разработчика?
PM   Вверх
mlitkin
Дата 28.3.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



В том-то и дело что все отрабатывает через PDO или mysqli
PM MAIL   Вверх
Feldmarschall
Дата 28.3.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



ну тогда, может быть, и использовать драйвер mysqli?
PM   Вверх
skyboy
Дата 29.3.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



я так понимаю, все дело в том, что метод select - только для select запросов. не для вызова ХП.
судя по выписке из мана:
Цитата

mixed query(string $query [,$arg1...]) 
Вызов не-SELECT запроса; для автоинкрементных полей в INSERT-запросах возвращает ID вставленной записи.

следует в твоем случае использовать query().
или, как и советует Feldmarschall,  перейти на mysqli
PM MAIL   Вверх
flashaa
Дата 29.3.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



skyboy, и в том же мануале это предположение опровергается
Цитата

Библиотека DbSimple поддерживает метод query(), который удобно использовать именно для подобных запросов. А теперь — сюрприз: query() является ни чем иным, как полным синонимом для пресловутого select(). А называется он по-другому, чтобы не пришлось думать: как это — INSERT в select().

Предполагаю, что проблема в SQL, а не в библиотеке.

Добавлено через 13 минут и 43 секунды
Вот разгадка: расширение mysql_ (на нем основана DbSimple_Mysql) не работает с хранимыми процедурами. 
http://forums.mysql.com/read.php?98,39264,39267#msg-39267

Это сообщение отредактировал(а) flashaa - 29.3.2008, 16:29
PM MAIL   Вверх
mlitkin
Дата 31.3.2008, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(flashaa @  29.3.2008,  16:25 Найти цитируемый пост)
Вот разгадка: расширение mysql_ (на нем основана DbSimple_Mysql) не работает с хранимыми процедурами.


Большое спасибо! Похоже действительно дело в этом :( Попробую порыться в исходниках DbSimple...
PM MAIL   Вверх
Feldmarschall
Дата 31.3.2008, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Может, сначала стоит просто подключить драйвер mysqli вместо mysql?
PM   Вверх
flashaa
Дата 31.3.2008, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



Цитата(mlitkin @  31.3.2008,  01:39 Найти цитируемый пост)
Попробую порыться в исходниках DbSimple... 

Да вообще уже порылись, так что решению проблемы не особо поможет.
Хм, вроде тут говорили, что mysqli совместима c mysql, можно действительно попробовать все mysql_ заменить на mysqli_
PM MAIL   Вверх
Feldmarschall
Дата 31.3.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Прошу прощения за то, что ввел в заблуждение.
Я был уверен, что в DbSimple присутствует драйвер mysqli. Однако, как выясняется, что, похоже, это не так =(
Меня сбила с толку фраза в документации про "Поддержку "родных" placeholder-ов СУБД". Я полагал, что это как раз и делается средствами mysqli.
PM   Вверх
flashaa
Дата 3.4.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



Feldmarschall, я правил ее под себя, так что могу сказать быстрее чем мануал. Там используется только mysql_ и под PHP4, потому что, как известно, mysqli - это переделка mysql под PHP 5 (в PHP4 его нет). В проектах Котерова на сайте dklab.ru основная цель - совместимость, кроссбраузерность и тп. Скрипты будут работать почти везде, но для частного случая их надо оптимизировать.
Плейсхолдеры там работают через регулярки и можно заметить что они (плейсхолдеры) разнообразнее будут, чем в mysqli.

Это сообщение отредактировал(а) flashaa - 3.4.2008, 13:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.