¿Como ejecutar 2 o mas procedimientos almacenados con mysqli en php?

publicado por: Anonymous

Tengo 2 procedimientos almacenados en el mismo archivo, la conexión se realiza de manera correcta ya que si borro cualquiera de los 2 procedimientos el otro si muestra información pero si dejo ambos solo se ejecuta el primero.

Tengo el archivo conectar.php con el sig código:

class Clase_Conecta{
     var $_Server = 'localhost';
     var $_User = 'root';
     var $_Password = '';
     var $_Bd = 'bd1';

     function Fn_getConnect(){
        if (!($conexion = new mysqli($this -> _Server, $this -> _User, $this -> _Password, $this -> _Bd))){
           echo "Error Conectando la base de Datos";
           exit();
        }else{
          echo "conexion exitosa";
        }
        return $conexion;
     }
  }

Y mi archivo principal.php con lo sig:

include ("conectar.php");
$Fn = new Clase_Conecta();
$Cn = $Fn -> Fn_getConnect();

$sql1 = "call sp1()";
$r = query($sql1);

while ($rP = $r -> fetch_array()){
            //Imprime tabla
       }

//Hasta aquí funciona bien pero si quiero ejecutar otro procedimiento almacenado no lo hace
//solo ejecuta el de arriba (el primero)

$sql2 = "call sp2()";
$r2 = query($sql2);

 while ($rP2 = $r2 -> fetch_array()){
            //Imprime tabla
     }

Me imagino que estoy comprendiendo mal los conceptos pero ya leí e investigue y no me queda del todo claro, por favor si alguien es tan amable de orientarme de que estoy haciendo mal o que estoy omitiendo

solución

Verás, no te funciona porque te falta el ; en el código sql.

Es un error en la sintaxis sql.

El código te debe quedar así:

include ("conectar.php");
$Fn = new Clase_Conecta();
$Cn = $Fn -> Fn_getConnect();

$sql1 = "call sp1();";
$r = query($sql1);

while ($rP = $r -> fetch_array()){
            //Imprime tabla
       }
$r->close();
$Cn->next_result();
//Hasta aquí funciona bien pero si quiero ejecutar otro procedimiento almacenado no lo hace
//solo ejecuta el de arriba (el primero)

$sql2 = "call sp2();";
$r2 = query($sql2);

 while ($rP2 = $r2 -> fetch_array()){
            //Imprime tabla
     }
 $r2->close();
 $Cn->next_result();

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *