Tengo este store procedure en mi BD MySQL
Código:
Desde PHP lo llamo de esta maneraCreate procedure SP_listarAutores(IN inicio INTEGER) BEGIN SET @i=inicio; PREPARE s FROM "SELECT * FROM autores LIMIT ?,20"; EXECUTE s USING @i; DEALLOCATE PREPARE s; END;
Código:
Y al ejecutarlo me sale el siguiente error$host="localhost"; $usuario="root"; $password=""; $db="Biblio"; $link=mysqli_connect($host,$usuario,$password,$db); $inicio=0;//Con esto el SP me deberia devolver los 20 primeros registros $rs = mysqli_query($link,"CALL SP_listarAutores ($inicio)"); while ($row=mysqli_fetch_array($rs)) { $Datos[ ]=$row; } mysqli_close($link);
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in…
Segun veo creo q el SP no esta retornando ningun valor ya q al reemplazar la linea del $rs por esta (ya no utilizo el SP)
Código:
No se genera ningun error y si me devuelve los datos correctamente $rs = mysqli_query($link, “SELECT * FROM autores LIMIT $inicio,20”);
Q es lo q esta pasando?? Estare utilizando mal algun mysqli_xxx?? O es q me falta algo implementar algo??
Si ejecuto el SP desde MySQL, este se ejecuta correctamente…el problema es desde PHP
He estado tratando de hacerlo de esta otra forma tb
Código:
No me genera error pero tampoco me devuelve nada…en q estoy fallando??..Cual es, a su criterio y experiencia, la mejor forma de llamar a un SP segun lo expuesto anteriormente??$stmt = mysqli_prepare($link, "CALL SP_listarAutores (?)"); $inicio = 0; mysqli_stmt_bind_param($stmt, "i", $inicio ); //la i es dedibo a q $inicio es un entero //Solo hay 4 tipos i=integer,d=double,s=string,b=blob… y si se trata de un parametro //especial como por ejem NULL??...NULL no tiene tipo mysqli_stmt_execute($stmt); while ($reg=mysqli_stmt_fetch($stmt)) { $Datos[ ]=$reg; } mysqli_stmt_close($stmt); mysqli_close($cnn);
Salu2