MySQL - Procedimieniento Almacenado

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Procedimieniento Almacenado

Publicado por Natxo (3 intervenciones) el 20/01/2021 16:10:02
Buenas tardes. Estoy aprendiendo por libre un poco de mysql y tengo una duda que no he encontrado respuesta por google a ver si alguien me puede echar un cable.
Estoy haciendo una pequeña app. Para acceder tiene un login que es una consulta SELECT que selecciona un usarío que el user y la clave correspondan con los enviados y me devuelva un nombre, un rol y un status. Quería sustituir esta consulta por un procedimiento almacenado. Lo he hecho así:


1
2
3
4
5
6
7
8
9
10
11
DELIMITER $$
 
CREATE PROCEDURE login (IN _user VARCHAR(15), IN _clave CHAR(64))
 
BEGIN
 
SELECT `nombre`, `rol`, `status`FROM users WHERE `user`=_user AND `clave`=_clave;
 
END$$
 
DELIMETER ;



Para hacer la petición lo hago así.

1
CALL login ('pedro', '12345678')

Mysql me devuelve un error. En concreto #1064, error de síntasis. Seguro que es una tontería pero no doy con nada. Alguien me puede decir por favor donde me equivoco.
Gracias anticipadas.
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
sin imagen de perfil

Procedimieniento Almacenado

Publicado por anonymous (59 intervenciones) el 20/01/2021 16:34:33
User es una palabra reservada, lo ideal es llamarle de otra forma, a fin de evitar conflictos.

Sin embargo así te debería funcionar:

1
2
3
4
5
6
7
8
9
10
CREATE PROCEDURE login(
  IN _user VARCHAR(15),
  IN _clave CHAR(64))
 
BEGIN
      SELECT Nombre, Rol, Status
	    FROM users
	    WHERE user = _user
      AND clave = _clave;
END;

La recomendación es blindar mucho más el acceso a las BD y hacer uso de las funciones llamadas "aes_encrypt" y "aes_decrypt", pues así como está queda susceptible de que te apliquen SQL Injection.

https://www.tutorialesprogramacionya.com/mysqlya/temarios/descripcion.php?inicio=63&cod=86&punto=84
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Procedimieniento Almacenado

Publicado por Natxo (3 intervenciones) el 20/01/2021 17:59:02
Muchas Gracias de verdad, ya me estaba volviendo un poco loco la verdad. Me has dado una pista fundamental. He corregido la columna `user` renombrada por nombre, `nombre` por nombre2 y Status también es palabra reservada y la he renombrado. He realizado esos cambios ya me funciona correctamente.

He estado mirando el enlace, es muy interesante. Lo voy a mirar detenidamente.

Gracias de nuevo.
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