les traigo una consulta que he buscado la sulucion por varios dias y no he podido continuar.
utilizo XAMP
Servidor: 127.0.0.1 via TCP/IP
Tipo de servidor: MySQL
Versión del servidor: 5.6.20 - MySQL Community Server (GPL)
Versión del protocolo: 10
Usuario: root@localhost
Conjunto de caracteres del servidor: UTF-8 Unicode (utf8)
lo que pasa es que estoy actualmente realizando un proyecto para la u el cual lo estoy haciendo en php y mysql con procedimientos almacenados.
mi problema es que he realizado dos procedimientos almacenados para la administracion de usuarios y son los siguientes;
Código SQL:
Ver original
CREATE DEFINER=`root`@`localhost` PROCEDURE `gestion_usuarios`( IN Usu_codigo INT, IN Usu_nombre1 VARCHAR(25), IN Usu_apellidos1 VARCHAR(25), IN Usu_celular1 VARCHAR(25), IN Usu_correo1 VARCHAR(25), IN Usu_telefono1 VARCHAR(25), IN Usu_direccion1 VARCHAR(25), IN Usu_nombre_usu VARCHAR(25), IN Usu_contrasena VARCHAR(25) ) BEGIN /*insertar*/ IF((Usu_codigo IS NULL)OR(Usu_codigo='')OR(Usu_codigo=0))THEN IF((Usu_nombre1<>'')AND(Usu_apellidos1<>''))THEN /*insertar*/ INSERT INTO `cinemax`.`tbl_usuarios`(usu_nombre,usu_apellidos, usu_celular,usu_email,usu_telefono,usu_direccion,u su_nombre_usu,usu_contrasena) VALUES(Usu_nombre1,Usu_apellidos1,Usu_celular1,Usu _correo1,Usu_telefono1,Usu_direccion1,Usu_nombre_u su,Usu_contrasena); SELECT 'se guardo'; END IF; END IF; /*eliminar*/ IF((Usu_codigo<>'')OR(Usu_codigo<>NULL))AND((Usu_n ombre1='')AND(Usu_apellidos1='')AND(Usu_celular1=' ')AND(Usu_correo1='')AND(Usu_telefono1='')AND(Usu_ direccion1='')AND(Usu_nombre_usu='')AND(Usu_contra sena=''))THEN DELETE FROM `cinemax`.`tbl_usuarios` WHERE `usu_cod`=Usu_codigo; SELECT 'se borro'; /*modificar*/ elseif((Usu_codigo<>'')OR(Usu_codigo<>NULL)OR(Usu_ codigo<>0))THEN IF((Usu_nombre1<>'')AND(Usu_apellidos1<>'')AND(Usu _celular1<>'')AND(Usu_correo1<>'')AND(Usu_telefono 1<>'')AND(Usu_direccion1<>'')AND(Usu_nombre_usu<>' ')AND(Usu_contrasena<>''))THEN UPDATE `cinemax`.`tbl_usuarios` SET usu_nombre=Usu_nombre1, usu_apellidos=Usu_apellidos1, usu_celular=Usu_celular1, usu_email=Usu_correo1, usu_telefono=Usu_telefono1, usu_direccion=Usu_direccion1, usu_nombre_usu=Usu_nombre_usu, usu_contrasena=Usu_contrasena WHERE usu_cod=Usu_codigo; SELECT 'se actualizo'; END IF; END IF; END$$ DELIMITER ;
este procedimiento lo que hace es que inserta modifica o elimina usuarios de una tabla.... este es mi primer procedimiento y funciona perfecto.....
pero mi problema es que trate de crear otro procedimiento para lo empleados:
Código MySQL:
Ver original
) VALUES (Emp_cedula,Emp_nombre1,Emp_apellidos1,Emp_telefon o1,Emp_direccion1,Emp_email1,Emp_celular1,Emp_desc ripcion1,Emp_nombre_usu1,Emp_contrasena1); /*eliminar*/ /*modificar*/ UPDATE `cinemax`.`tbl_empleados` SET `emp_cedula`=Emp_cedula, `emp_nombre`=Emp_nombre1, `emp_apellidos`=Emp_apellidos1, `emp_telefono`=Emp_telefono1, `emp_direccion`=Emp_direccion1, `emp_email`=Emp_email1, `emp_celular`=Emp_celular1, `emp_descripcion`=Emp_descripcion1, `emp_nombre_usu`=Emp_nombre_usu1, `emp_contrasena`=Emp_contrasena1 WHERE `emp_codigo`=Emp_codigo;
el cual deberia de hacer la misma funcion que el otro procedimiento que es insertar modificar y eliminar los empleados de una tabla.... el error puntual es que el procedimiento de empleados inserta bien a la tabla pero cuando trato de eliminar o modificar un empleado se elimina o se modifica toda la tabla es decir
que la sentencia DELETE FROM `cinemax`.`tbl_empleados` WHERE `emp_codigo`=Emp_codigo; el where no funciona y elimina tdo....
en el caso de modificar:
Código MySQL:
Ver original
`emp_nombre`=Emp_nombre1, `emp_apellidos`=Emp_apellidos1, `emp_telefono`=Emp_telefono1, `emp_direccion`=Emp_direccion1, `emp_email`=Emp_email1, `emp_celular`=Emp_celular1, `emp_descripcion`=Emp_descripcion1, `emp_nombre_usu`=Emp_nombre_usu1,
me modifica todos los usuarios y no entiendo el por que elimina y modifica todos lo usuarios si las dos sentencial llevan consigo la clausula WHERE...
para concluir quiero decir que he revisado los campos de las tablas y son identicos, es decir si el campo es entero el procedimiento lleva una variable entera
he tratado de eliminar el procedimiento varias veces y volverlo a crear pero pasa lo mismo
es mas e migrado la base de datos para otro equipo y tampoko funciona el procedimiento, lo uniko que funciona es el insertar empleado, por que me elimina toda la tabla y me modifica toda la tabla como si no tuviera un WHERE
espero me ayuden y muchas gracias