buenos dias a todos
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 originalCREATE 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)
if((Emp_cedula
<>'')and(Emp_nombre1
<>'')and(Emp_ape llidos1
<>'')and(Emp_telefono1
<>''))then INSERT INTO `cinemax`.
`tbl_empleados` (`emp_cedula`, `emp_nombre`, `emp_apellidos`, `emp_telefono`, `emp_direccion`, `emp_email`, `emp_celular`, `emp_descripcion`, `emp_nombre_usu`, `emp_contrasena`) 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*/
if((Emp_codigo
<>'')or(Emp_codigo
<>NULL))and((Emp_c edula
='')and(Emp_nombre1
='')and(Emp_apellidos1
='') and(Emp_telefono1
='')and(Emp_direccion1
='')and(Emp _email1
='')and(Emp_celular1
='')and(Emp_descripcion
1='')and(Emp_nombre_usu1
='')and(Emp_contrasena1
='' ))then /*modificar*/
elseif
((Emp_codigo
<>'')or(Emp_codigo
<>NULL)or(Emp_ codigo
<>0))thenif((Emp_cedula
<>'')and(Emp_nombre1
<>'')and(Emp_ape llidos1
<>'')and(Emp_telefono1
<>'')and(Emp_direccio n1
<>'')and(Emp_email1
<>'')and(Emp_celular1
<>'')and (Emp_descripcion1
<>'')and(Emp_nombre_usu1
<>'')and( Emp_contrasena1
<>''))then 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 originalUPDATE `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
;
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