elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Dudas con MySQL, SP con multiples parametros y PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas con MySQL, SP con multiples parametros y PHP  (Leído 1,613 veces)
Anteros

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Dudas con MySQL, SP con multiples parametros y PHP
« en: 5 Diciembre 2008, 15:24 pm »

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,NombreContacto,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,$listaInicio)";
      $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,NombreContacto,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 


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[AYUDA]Actualizar multiples registros en MySQL
PHP
Feedeex 1 4,443 Último mensaje 25 Abril 2011, 23:57 pm
por merolhack
Dudas con parametros para este método
Java
GaudyG 1 3,157 Último mensaje 4 Julio 2011, 02:38 am
por Valkyr
Dudas: Parametros remplazables | Programación Batch
Scripting
miguel_s777 1 4,042 Último mensaje 8 Octubre 2011, 18:17 pm
por leogtz
[MySQL] Funciones con parámetros infinitos
Bases de Datos
raul338 3 4,175 Último mensaje 22 Octubre 2011, 00:50 am
por Shell Root
Consulta de multiples tablas de mysql
Bases de Datos
soy_nicanor 4 4,666 Último mensaje 17 Mayo 2015, 06:28 am
por ZeroVzla
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines