Foros del Web » Programando para Internet » PHP »

Ejecutar Procedimiento almacenado MySql

Estas en el tema de Ejecutar Procedimiento almacenado MySql en el foro de PHP en Foros del Web. ¡Hola! Tengo que llamar a un procedimiento almacenado con dos parametros de entrada y uno de salida, llevo ya un buen rato buscando y probando ...
  #1 (permalink)  
Antiguo 14/08/2014, 09:17
Tio
 
Fecha de Ingreso: enero-2005
Mensajes: 54
Antigüedad: 19 años, 10 meses
Puntos: 1
Ejecutar Procedimiento almacenado MySql

¡Hola!

Tengo que llamar a un procedimiento almacenado con dos parametros de entrada y uno de salida, llevo ya un buen rato buscando y probando código pero no doy con la solución.

El procedimiento almacenado se llama tal que así:

call Acceso ("usuario1","1234",@registros);

tiene que devolver en @registros un valor INT


¿Pueden ayudarme con la forma de llamar al SP y leer el resultado ?.

Gracias!
  #2 (permalink)  
Antiguo 14/08/2014, 09:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ejecutar Procedimiento almacenado MySql

Código MySQL:
Ver original
  1. call Acceso ("usuario1","1234",@registros);
Esto sería ejecutando en consola de MySQL, pero la variable @registros es una variable de usuario de MySQL, no de PHP, y para ser parámetro de retorno debería ser inicializada primero, de lo contrario será NULL y devolverá NULL.
Además sólo funcionaría desde pHP si la conexión no se cierra luego de la llama al SP, o de lo contrario la variable muere.

Por otro lado, no sabemos cómo es el código del SP, y si están correctamente definidos los parámetros de entrada/salida, de modo que es difícil saber si lo estás haciendo correctamente, o si siquiera es necesaria esa variable.

Finalmente dos cosas: Las comillas (") no siempre funcionan en MySQL como contenedores de cadenas de texto. Eso dependerá de la configuración del servidor de MySQL. Es preferible usar apóstrofos (').
Por otro lado, este sería más tema para el foro de MySQL, no para el de PHP...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/08/2014, 14:15
Tio
 
Fecha de Ingreso: enero-2005
Mensajes: 54
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: Ejecutar Procedimiento almacenado MySql

¡Hola!

Gracias por responder....OK,,, usaré la comilla simple para construir las cadenas....

Pongo el código del SP, pero vamos, eso no creo que sea el problema pero si te sirve para entender mi problema pues lo pego aquí:

CREATE DEFINER=`root`@`localhost` PROCEDURE `AccesoUsuario`(
IN NombreP VARCHAR(20),
IN ClaveP VARCHAR(20),

OUT AccesoP INT )
BEGIN

SELECT Count(*) INTO AccesoP FROM usuarios
WHERE Usuario = NombreP AND Clave = ClaveP;
END

YO la duda que tengo es de PHP, no de MySQL, es decir, veo ejemplos de como ejecutar storeProc pero no consiguo encontrar un ejemplo que se adapte o me ilumine para poder hacer lo que quiero, leer la variable de "AccesoP"

¿Puedes echarme una mano?. ya de paso crees que tenga que cambiar algo en el SP, es muy sencillo y generalmente mySql no es problema. Yo lo que quiero es accesar desde PHP
  #4 (permalink)  
Antiguo 14/08/2014, 14:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ejecutar Procedimiento almacenado MySql

En realidad para el caso que quieres cubrir, bastaría con un SP de estas características:
Código MySQL:
Ver original
  1. CREATE PROCEDURE `AccesoUsuario`(
  2. IN NombreP VARCHAR(20),
  3. IN ClaveP VARCHAR(20),
  4. OUT AccesoP INT)
  5.   SELECT Count(*) AccesoP
  6.   FROM usuarios
  7.   WHERE Usuario = NombreP AND Clave = ClaveP;
Ese SP devolvería a PHP un array de un único indice con el valor requerido, y con un valor igual o mayor a cero. Lo tratarías comol una query normal y sin agwegados.

Para usarlo con esa variable tienes dos problemas: 1) Debes inicializarla en MySQL, dentro o fuera del SP, pero debes hacerlo, proque una variable en MySQL ocn "@" es una variable de conexión y usuario cuyo valor incial es siempre NULL. Y cualquier operacion de asignación de algo a NULL dará NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 15/08/2014, 05:32
Tio
 
Fecha de Ingreso: enero-2005
Mensajes: 54
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: Ejecutar Procedimiento almacenado MySql

Gracias por la ayuda, pero lo que estoy haciendo es "aprender" , no estoy desarrollando ningún proyecto importante, por eso es por lo que quiero saber como poder leer variables de salida de un storeproc.

Ciertamente tu modificación sirve, de hecho es que no necesito ni siquiera un procedimiento almacenado, una simple sql bastaría, pero eso ya lo se manejar y por eso ahora estoy liado con poder leer parametros de salida del procedimiento almacenado, porque es lo que me toca aprender..... Por eso pregunto en el foro de PHP y no en el de mysql,...

En la fase en la que me encuentro (novato aprendiz) quiero solo hacer código para aprender como maneja php ciertas cosas, en este caso como se comunica con mysql.

¿podrias ponerme un ejemplo para leer en PHP la variable de salida?.... entiendo que la conexión ha de permanecer abierta, eso no sería problema.

gracias!

Etiquetas: almacenado, mysql, procedimiento, registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:53.