|   Dudas con MySQL, SP con multiples parametros y PHP 
  Hola que tal …hace unos días me estoy iniciando en el mundo de PHP y MySQL (ya que ya tengo tiempo desarrollando en .NET) y tengo las siguientes dudas…
 1.	Como llamo a un MySQL stored procedure (SP)  con varios parámetros desde PHP??
 
 He creado el siguiente SP
 
 CREATE DEFINER = 'root'@'localhost' PROCEDURE `_Proveedores`(IN _TipoConsulta TINYINT, IN _IdProveedor INTEGER, IN _NombreCompania VARCHAR(40), IN _Direccion VARCHAR(60), IN _Telefono VARCHAR(24), IN _NombreContacto VARCHAR(30), IN _CargoContacto VARCHAR(30),IN _listaInicio INTEGER)
 BEGIN
 
 
 /*UPDATE*/
 IF _TipoConsulta=1 THEN
 UPDATE proveedores
 SET NombreCompañía = _NombreCompania,
 Dirección = _Direccion,
 Teléfono=_Telefono,
 NombreContacto = _NombreContacto,
 CargoContacto = _CargoContacto
 WHERE IdProveedor=_IdProveedor;
 
 /*LISTAR PROVEEDORES*/
 ELSEIF _TipoConsulta=2 THEN
 SELECT IdProveedor,NombreCompañía,Dirección,Teléfono,Nomb  reContacto,CargoContacto
 FROM proveedores LIMIT _listaInicio,5;
 
 /*INSERT*/
 ELSEIF _TipoConsulta=3 THEN
 INSERT INTO proveedores
 (NombreCompañía
 ,Dirección
 ,Teléfono
 ,NombreContacto
 ,CargoContacto)
 VALUES
 (_NombreCompania
 ,_Direccion
 ,_Telefono
 ,_NombreContacto
 ,_CargoContacto);
 
 /*DELETE*/
 ELSEIF _TipoConsulta=4 THEN
 DELETE FROM proveedores
 WHERE IdProveedor=_IdProveedor;
 END IF;
 
 END;
 
 El SP no me genera ningún error al compilarlo …a simple vista si se entiende lo que deseo hacer no??
 Bueno la cuestion es q este SP de acuerdo a los parámetros q se le pasen hara determinada cosa
 
 
 En mi codigo PHP he intendado llamarlo dentro de una funcion asi:
 
 …
 …
 
 $consulta="CALL _Proveedores(2,null,null,null,null,null,null,$list  aInicio)";
 $resultado=mysql_query($consulta,$cnn);
 
 while ($registro=mysql_fetch_array($resultado))
 {
 $coleccion[]=$registro;
 }
 
 mysql_close($cnn);
 
 return $coleccion;//esto seria lo q devuelve mi funcion
 
 Y he obtenido el error:
 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in…
 
 Supongo que, o bien el SP esta siendo mal llamado…(tal vez no es con mysql_query) o estoy pasando mal los parámetros por lo q el SP no retorna ningun registro…
 
 2.	Esta bien como asigno los parámetros al SP desde PHP??
 
 Al llamar al SP este deberia devolverme un primer grupo de 5 Proveedores desde $listaInicio (x ejem si $listaInicio fuera 0  me devolveria los primeros 5 Proveedores ) y estos ser guardados en $coleccion
 
 3.	Necesariamente  tengo que especificar los otros parámetros como null??
 
 Estos parámetros innecesarios (en esta funcion) deben ser pasados como null desde el codigo PHP?? O desde el mismo SP?? … (Como se haria esto ultimo??)
 
 Por ejem en . NET yo hago lo siguiente (Disculpas por poner este codigo .NET pero es solo con motivos a un mayor entendimiento a mi consulta …si se desea tal vez dsps se puede borrar jejeje )
 
 CREATE proc [dbo].[_Proveedores]
 @Tipoconsulta tinyint=null,
 @IdProveedor int=null,
 @NombreCompañía nvarchar(40)=null,
 @Dirección nvarchar(60)=null,
 @Teléfono nvarchar(24)=null,
 @NombreContacto nvarchar(30)=null,
 @CargoContacto  nvarchar(30)=null
 as
 
 --UPDATE
 if @Tipoconsulta=1
 Begin
 UPDATE Proveedores
 SET [NombreCompañía] = @NombreCompañía,
 [Dirección] = @Dirección,
 [Teléfono]=@Teléfono,
 [NombreContacto] = @NombreContacto,
 [CargoContacto] = @CargoContacto
 
 
 WHERE IdProveedor=@IdProveedor
 End
 
 --LISTAR PROVEEDORES
 else if @Tipoconsulta=2
 begin
 SELECT IdProveedor,NombreCompañía,Dirección,Teléfono,Nomb  reContacto,CargoContacto
 FROM Proveedores
 End
 
 …etc
 …etc
 
 En este caso los parámetros del SP se pasan como null desde el mismo SP, esto me hace q al llamar el SP desde (x ejem) ASP.NET ya no declare como null todos los demas parámetros que no necesito para determinada funcion , es decir para listar todos los Proveedores solo tendria q pasarle el @Tipoconsulta=2 y el olvidarme del resto de param
 
 En MySQL los parametros de los SP no llevan @ no??
 
 Por lo dicho anteriormente mi funcion lo llamaria al SP de la sigte manera (desde ASP.NET con C#):
 
 …
 …
 
 SqlCommand consultasql = new SqlCommand("_Proveedores", cnn);
 consultasql.CommandType = System.Data.CommandType.StoredProcedure;
 consultasql.Parameters.Add("@Tipoconsulta", System.Data.SqlDbType.TinyInt).Value = 2;
 
 …
 …
 
 Con esto ya no se tendria q poner null a todos los demas parametros q no son utilizados 
 
 Creo q con todo esto se entendio lo q desearia poder hacer pero con MySQL y PHP…es esto posible???...un poco de orientación (o regaño por pensar en hacer cosas q no se pueden hacer jejeje) no me vendria nada mal 
 
 …gracias por todo de antemano
 
 Salu2 
     |