Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/03/2012, 11:26
ferminako
 
Fecha de Ingreso: abril-2010
Mensajes: 298
Antigüedad: 14 años, 6 meses
Puntos: 1
Error con la conexion lanzado una segunda query

Buenas al intentar lanzar una segunda query me muestra :
MySQL Error: Commands out of sync; you can't run this command now.
Esta es la clase conexion:
Código PHP:
Ver original
  1. <?php class MySQL{
  2.  
  3.   private $conexion; private $total_consultas;
  4.  
  5.   public function MySQL(){
  6.     if(!isset($this->conexion)){
  7.       $this->conexion = (mysql_connect("localhost","fermin","fermin"))
  8.         or die(mysql_error());
  9.       mysql_select_db("db",$this->conexion) or die(mysql_error());
  10.     }
  11.   }
  12.  
  13.   public function consulta($consulta){
  14.     $this->total_consultas++;
  15.     $resultado = mysql_query($consulta,$this->conexion);  
  16.     if(!$resultado){
  17.       echo 'MySQL Error: ' . mysql_error();
  18.       exit;
  19.     }
  20.     return $resultado;
  21.   }
  22.  
  23.   public function sp($nombre,$parametros){
  24.     if(!$parametros){
  25.       $query='CALL '.$nombre.'()';
  26.     }else{
  27.       $query='CALL '.$nombre.'('.$parametros.')';
  28.     }
  29.    
  30.     return $this->consulta($query);
  31.   }
  32. }

Y esta es la primera query:

Código PHP:
Ver original
  1. require("php/Clases/GestionMarcas.php");
  2.     $GM=new GestionMarcas();
  3.     require("php/Clases/mysql.php");
  4.     $MySQL=new MySQL();
  5.     $marcas=$GM->ListarMarcas($MySQL); 
  6.     require("php/Vistas/V_ListarMarcas.php");

Estos es la clase que gestiona las Marcas:

Código PHP:
Ver original
  1. <?php class GestionMarcas{
  2.   public function ListarMarcas($MySQL){
  3.    //Listaremos todas las marcas order by Nombre Marca.
  4.    return $MySQL->sp("S_Marcas","","");
  5.   }
  6. }?>

Y en esta, la segunda query es en la que falla:

Código PHP:
Ver original
  1. <?php
  2.     require("php/Clases/GestionArticulos.php");
  3.     $GA=new GestionArticulos();
  4.  
  5.  //NO VUELVO A CREAR LA ISNTANCIA $MYSQL PUESTO QUE YA EXISTE
  6.  
  7.     $articulos=$GA->ListarArticulosPaginados($MySQL, $_GET['id'], $_GET['regini'], $_GET['regxpag']);  
  8.  
  9.     require("php/Vistas/V_ListarArticulosXMarca.php");
  10. ?>

Esta es la clase de articulos:
Código PHP:
Ver original
  1. <?php class GestionArticulos{
  2.  
  3.   public function ListarArticulosPaginados($MySQL,$IdMarca,$RegistroIicial,$RegistrosXPagina){
  4.    //Listaremos todas las articulos order by orden familia y orden articulo de esa marca.
  5.    
  6.    return $MySQL->sp("S_Articulos",$IdMarca.",".$RegistroIicial.",".$RegistrosXPagina);
  7.   }
  8. }?>

Se que no es problema de la query puesto que si elimno la primera query y no la hago, la segunda funciona correctamente, por lo que supongo que la conexion se queda ocupada o algo asi...