create procedure check_book(in bn varchar(255))
begin
select counter from book where bname=bn;
end;
php и хранимые процедуры
Код
Цитата:
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++;
}
$query="call check_book('php and mysql')";
$result=mysql_query($query,$mysql);
while($row=mysql_fetch_row($result))//64 строка
{
$i++;
}
код на создание хранимой процедуры check_book
Код
Код:
В случае если я пользуюсь не хранимой процедурой, а непосредственно самим запросом то всё работает нормально, вызов делаю следующим кодом
Код
Код:
$i=0;
$query="select counter from book where bname='php and mysql'";;
$result=mysql_query($query,$mysql);
while($row=mysql_fetch_row($result))
{
$i++;
}
$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.
У вас не создалась хранимая процедура. Чтобы в этом убедиться можете тот же 'call ...' запустить в phpmyadmin или чем-то аналогичном. Причину по которой не создалась хп ищите в ветках форума связанных с SQL.
Код:
$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++;
}
}
$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++;
}
}
shaelf после того как я попробова предложеный вами код мне выдало следующюю ошибку:
Цитата:
PROCEDURE library.check_book can't return a result set in the given context
Это еще раз дает нам знать, что синтаксис записан не совсем правильно для процедуры. Хм, вот только сам пока не вижу, в чем лажа..
Код:
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;
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')
Переезжаем в SQL