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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Problemas con procedimiento almacenado en mysql
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con procedimiento almacenado en mysql  (Leído 2,982 veces)
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Problemas con procedimiento almacenado en mysql
« en: 4 Julio 2015, 02:49 am »

Hola buenas, ¿como están?.
Bueno, les cuento, hace un tiempo que no he trabajado con bases de datos y he perdido un poco la practica.

Requiero hacer un procedimiento almacenado, cuyo unico propocito sea insertar los datos (email, password, role) en una tabla llamada user.

Quiero que la password se encripte con MD5, pero no hay manera.... no se que estoy haciendo mal. Espero me puedan ayudar. Este es el codigo que estoy utilizando:

Código
  1. CREATE PROCEDURE `sp_user_insert` (IN `sp_email` VARCHAR(255), IN `sp_password` TEXT, IN `sp_role` INT)
  2. BEGIN
  3. DECLARE `sp_encrypted_password` TEXT;
  4. SET `sp_encrypted_password` = (SELECT MD5(`sp_encrypted_password`));
  5. INSERT INTO `user`( `user_email`, `user_password`, `user_role_id`) VALUES ( `sp_email`, `sp_encrypted_password`, `sp_role`);
  6. END

Por si lo requieren, esta es la tabla:

Código
  1. CREATE TABLE IF NOT EXISTS `user` (
  2.  `user_id` INT(11) NOT NULL AUTO_INCREMENT,
  3.  `user_email` VARCHAR(255) NOT NULL,
  4.  `user_password` text NOT NULL,
  5.  `user_role_id` INT(11) NOT NULL,
  6.  PRIMARY KEY (`user_id`)
  7. );


« Última modificación: 4 Julio 2015, 22:57 pm por Nac-ho » En línea

0roch1

Desconectado Desconectado

Mensajes: 123



Ver Perfil
Re: Problemas con procedimiento almacenado en mysql
« Respuesta #1 en: 11 Septiembre 2015, 03:18 am »

En principio lo que debes hacer es analizar la longitud de los campos para una mejor optimización de la base de datos.

Código
  1. CREATE TABLE IF NOT EXISTS `user` (
  2.  `user_id` INT(6) NOT NULL AUTO_INCREMENT,
  3.  `user_email` VARCHAR(360) NOT NULL,
  4.  `user_password` VARCHAR(32) NOT NULL,
  5.  `user_role_id` INT(2) NOT NULL,
  6.  PRIMARY KEY (`user_id`)
  7. );
  8.  

En tu procedimiento el SELECT está de más al momento de llamar la función MD5
Código
  1. DELIMITER $$
  2.  
  3. CREATE
  4.    PROCEDURE `prueba`.`sp_user_insert`(IN `sp_email` VARCHAR(360), IN `sp_password` VARCHAR(100), IN `sp_role` INT(2) )
  5.  
  6.    BEGIN
  7. DECLARE `sp_encrypted_password` VARCHAR(32);
  8. SET `sp_encrypted_password` = MD5(`sp_password`);
  9. INSERT INTO `user`( `user_email`, `user_password`, `user_role_id`) VALUES ( `sp_email`, `sp_encrypted_password`, `sp_role`);
  10.    END$$
  11.  
  12. DELIMITER ;
  13.  


Código
  1. CALL `sp_user_insert`('0roch1@hakkesshu', 'Pas$w0rD', 1);
  2.  

Código
  1. SELECT * FROM `user`;
  2.  

Saludos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
llamar Procedimiento Almacenado
Programación Visual Basic
juanjoxx 0 1,477 Último mensaje 9 Septiembre 2008, 05:23 am
por juanjoxx
error al crear procedimiento almacenado en MySQL [SOLUCIONADO]
Bases de Datos
KandiZickZad 6 11,652 Último mensaje 12 Octubre 2010, 20:32 pm
por KandiZickZad
¿crear un evento programado para un procedimiento almacenado MYSQL?
Bases de Datos
efreway 1 5,906 Último mensaje 10 Noviembre 2011, 20:31 pm
por Shell Root
tabla temporal en procedimiento almacenado
Bases de Datos
OssoH 0 3,628 Último mensaje 21 Noviembre 2012, 21:58 pm
por OssoH
Llamar un procedimiento almacenado PL desde PHP.
Desarrollo Web
Saberuneko 7 5,903 Último mensaje 21 Marzo 2014, 12:52 pm
por Saberuneko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines