Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

php и хранимые процедуры

10K
03 декабря 2007 года
s-haman
64 / / 27.03.2007
Здравствуйте, подобной темы ненашел и решил создать новыю, у меня стоит вамп сервер версии 5_1.7.3,там в мускуле я создал базу даных и порядка 40 хранимых процедур, процедуры используються для добавления,удаления,обновления и выборки данных и получаетсья когда я вызываю процеудуру для выборки данных мне выдает ошибку.
Код
Цитата:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\Server\www\library\index.php on line 64



вызов хранимой процедуры реализован:
Код

 
Код:
$i=0;
$query="call check_book('php and mysql')";
$result=mysql_query($query,$mysql);
while($row=mysql_fetch_row($result))//64 строка
    {
        $i++;
    }

код на создание хранимой процедуры check_book
Код
 
Код:
create procedure check_book(in bn varchar(255))
begin
select counter from book where bname=bn;
end;


В случае если я пользуюсь не хранимой процедурой, а непосредственно самим запросом то всё работает нормально, вызов делаю следующим кодом
Код
 
Код:
$i=0;
$query="select counter from book where bname='php and mysql'";;
$result=mysql_query($query,$mysql);
while($row=mysql_fetch_row($result))
   {
    $i++;
   }

вопрос такой как мне получиться данные используя хранимые процедуры.
P.S. mysql версии 5.0.45, php версии 5.2.4.
337
03 декабря 2007 года
shine
719 / / 09.06.2006
У вас не создалась хранимая процедура. Чтобы в этом убедиться можете тот же 'call ...' запустить в phpmyadmin или чем-то аналогичном. Причину по которой не создалась хп ищите в ветках форума связанных с SQL.
15
03 декабря 2007 года
shaelf
2.7K / / 04.05.2005
Попробуй вот так:
Код:
$i=0;
$query="call check_book('php and mysql')";
$result=mysql_query($query,$mysql);
if(mysql_error()) {
    echo mysql_error();
} else {
    while($row=mysql_fetch_row($result))//64 строка
        {
            $i++;
        }
}
10K
03 декабря 2007 года
s-haman
64 / / 27.03.2007
shine процедура создана я её вижу в базе данных,через Aqua data studio и другие подобные программы, даже через консоль управления mysql эта процедура видна и нормально работает.

shaelf после того как я попробова предложеный вами код мне выдало следующюю ошибку:
Цитата:
PROCEDURE library.check_book can't return a result set in the given context

251
03 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Это еще раз дает нам знать, что синтаксис записан не совсем правильно для процедуры. Хм, вот только сам пока не вижу, в чем лажа..
10K
03 декабря 2007 года
s-haman
64 / / 27.03.2007
Я в принципе разобрался с той проблемой, результаты не возвращялись так как процедура не может возвращять результаты, результат может возвращять функция и поэтому пришлось переделать код хранимой проыедуры в код функции и код получился следующий:
 
Код:
create function check_book(bn varchar(255))
returns int
begin
declare res int;
select counter into res from book where bname=bn;
return res;
end;

но появилось ождно но, эта функция работает только в том случае если в результате запроса возвращяетсья одно значение или ничего не возвращяетсья, если больше то не работает, как я понимаю это из-за того что я записываю результат запроса в переменную, а как мне записать его в массив, точнее как в мускуле обявиться массив я этого ненашел, подскажите если кто знает.
P.S. для вызова функци надо писать
 
Код:
select check_book('php and mysql')
15
04 декабря 2007 года
shaelf
2.7K / / 04.05.2005
Переезжаем в SQL
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог