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

