PHP - Hacer un llamado de un procedimiento almacenado de MYsql en PHP

   
Vista:

Hacer un llamado de un procedimiento almacenado de MYsql en PHP

Publicado por Cristian ezejar@hotmail.es (3 intervenciones) el 01/06/2014 03:18:24
Hola que tal, soy nuevo aqui, el problema que tengo es que no se como llamar un procedimiento almacenado de mysql en php,
he buscado como hacerlo pero lo que he encontrado no me ha funcionado o no lo he sabido implementar.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Hacer un llamado de un procedimiento almacenado de MYsql en PHP

Publicado por xve (5518 intervenciones) el 01/06/2014 18:07:46
Hola Cristian, no comentas que conectar estas utilizando, pero es como si llamaras a una consulta, lo único que llamas al procedimiento... seria algo así:
1
$mysqli->query("CALL MiProdecimiento(parametro1, parametro2, ...)");

Si nos puedes comentar con mas detalle tu problema...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hacer un llamado de un procedimiento almacenado de MYsql en PHP

Publicado por Cristian ezejar@hotmail.es (3 intervenciones) el 01/06/2014 21:27:10
Gracias por contestar, bueno lo que quiero hacer es llamar un procedimiento con php en dreamweaver, el procedimiento lo hago en mysql 5.2 server, para conectar a la base de datos utilizo una funcion guardada en un archivo "conexion.php" llamada conectar() donde se usa mysl_connect y mysql_select_db con los parametros de las base de datos, el usuario y la contraseña. Cada que quiero ejecutar un query en php llamo conectar() y despues hago la sintaxis del query.

1
2
3
4
5
6
conectar();
$qry="select * from tabla";
$ejec=mysql_query($qry);
while($ren=mysql_fetch_array($ejec)){
  echo "$ren[atributo]";
}

pero no se como llamar un procedimiento y mostrar el resultado, o guardar el valor que regresa el procedimiento en una variable.
Este seria un ejemplo de procedimento en mysql.

1
2
3
4
5
6
7
8
9
create procedure exist(in cve int,out numero int)
begin
 if(select cve_tab from tabla where cve_tab=cve) then
  set numero=1;
 else
  set numero=0;
 end if;
 select n;
end;

y es en lo que no se como hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Hacer un llamado de un procedimiento almacenado de MYsql en PHP

Publicado por xve (5518 intervenciones) el 02/06/2014 07:12:33
Hola Cristian, es lo mismo pero en vez de utilizar select utiliza CALL... algo así:
1
2
3
4
5
6
conectar();
$qry="CALL exists(valor)";
$ejec=mysql_query($qry);
while($ren=mysql_fetch_array($ejec)){
  echo $ren["numero"];
}

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hacer un llamado de un procedimiento almacenado de MYsql en PHP

Publicado por Cristian (3 intervenciones) el 02/06/2014 16:26:22
Hola, al llamarlo en php me marca un warning

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\ProyectoBase\consullib.php on line 11

Lo puse asi

conectar();
$qry="CALL exists(1)";
$ejec=mysql_query($qry);
while($ren=mysql_fetch_array($ejec)){
echo $ren["numero"];
}

En mysql lo llamo asi

call exist(1);

y me manda esto:

ERROR 1318 (42000): Incorrect number of arguments for PROCEDURE biblioteca.exist
e; expected 2, got 1

entonces lo llamo asi

call exist(1,@n);

y me manda el resultado. Por eso en php lo llame tambien asi:

$qry="CALL exists(1,@n)";
$ejec=mysql_query($qry);
while($ren=mysql_fetch_array($ejec)){
echo $ren["numero"];
}

y me manda el mismo warning.

La verdad no se que pueda ser...

mande un echo de $qry y si esta bien la sintaxis
mande un var_dump de $ejec y me manda un bool(false)
mande un var_dump de $d que es $d=mysql_fetch_array($ejec) y me manda un bool(false)
del $ren no me deja mandar el echo por el warning.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar