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


 


Tema destacado: Píldoras formativas en seguridad de la informació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 856 veces)
3n31ch


Desconectado Desconectado

Mensajes: 350


Grandes conocimientos engendran grandes dudas


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

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 por Nac-ho » En línea

0roch1

Desconectado Desconectado

Mensajes: 122



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

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:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines