Muy buenos dias … tengo el siguiente problema y no se me podrian ayudar
Tengo este store procedure en mi BD MySQL
Código:
Create 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;
Desde PHP lo llamo de esta manera
Código:
$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);
Y al ejecutarlo me sale el siguiente error
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:
$rs = mysqli_query($link, “SELECT * FROM autores LIMIT $inicio,20”);
No se genera ningun error y si me devuelve los datos correctamente
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:
$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);
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??
Salu2