Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2015, 03:03
Javierc
 
Fecha de Ingreso: marzo-2005
Mensajes: 7
Antigüedad: 19 años, 9 meses
Puntos: 0
CALL Procedure() Commands out of sync; you can't run this command now

Buenas a todos,

Tengo un desarrollo que hace una llamada a dos procedimientos: de esta forma...

CALL procedimiento1 (var1, var2);
...
...
$variable = valor_campo_de_registro_de_procedimiento1
CALL procedimiento2 ($variable);
...
...

Si solo hay una llamada a un procedimiento no hay problema, o si en lugar de llamar a los procedimientos los cambio por las select funciona sin problema. Pero si lo hago como os he indicado obtengo este error:

Commands out of sync; you can't run this command now

Por lo que he mirado por internet parece que falta que se cierre la conexion cuando obtengo el primer conjunto de resultados. Pero no consigo dar con la forma de hacerlo. La unica manera de que me funcione es destruyendo el objeto de la conexion y volviendolo a crear antes de la segunda llamada .. pero esa forma no me parece la correcta.

El metodo que utilizo es el siguiente y lo que hace es volcar los resultados en un array :

Código PHP:
Ver original
  1. $resultado = mysqli_query($this->conexion, $sql);
  2.                 if (!$resultado) {
  3.                     $this->error = mysqli_errno($this->conexion);
  4.                 } else {
  5.                     if (mysqli_num_rows($resultado) == 0) {
  6.                         return false;
  7.                     } else {
  8.                         $i = 0;
  9.                         while ($row = mysqli_fetch_array($resultado, MYSQLI_ASSOC)) {
  10.                             foreach ($row as $indice => $valor) {
  11.                                 $r["$indice"][$i] = $valor;
  12.                             }
  13.                             $i++;
  14.                         }
  15.                         mysqli_free_result($resultado);
  16.                         return $r;
  17.                     }
  18.                 }


Si alguien me puede echar una mano, muchas gracias.