Buenas
Por favor alguien podria ayudarme. Tengo un error al querer alctualizar unos datos de la base de datos y no encuentro la solucion.
Cuando actualizo en el formulario cualquier campo y el campo del rol o el rol solamente (No me da error), pero cuando actualizo algun campo sin cambiar el rol (Me da ERROR)
Este es el Error
Fatal error: Uncaught mysqli_sql_exception: Cannot add or update a child row: a foreign key constraint fails (`depositoweb2`.`usuario`, CONSTRAINT `id_rol` FOREIGN KEY (`id_rol`) REFERENCES `rol` (`id_rol`) ON DELETE CASCADE ON UPDATE CASCADE) in ---- sistema\editar_usuario.php on line 31
La linea 31 es esta
$sql_update = mysqli_query($conection,"UPDATE usuario SET nombre = '$nombre', servicio = '$servicio', usuario = '$user', id_rol = '$id_rol' WHERE $id_usuario = id_usuario ");
$id_usuario = $_POST['id_usuario'];
$nombre = $_POST['nombre'];
$servicio = $_POST['servicio'];
$user = $_POST['usuario'];
$clave = md5($_POST['clave']);
$id_rol = $_POST['id_rol']; (Es la llave foranea)
Tabla Usuario
id_usuario
nombre
servicio
usuario
clave
id_rol
activo
Tabla Rol
id_rol
rol
activo
El mensaje de error es bastante claro: la clave ajena está cambiando y la restricción de clave ajena no te permite hacerlo.
Por una parte, en vez de lanzar directamente la consulta, guarda la sentencia SQL en una cadena de texto y muéstrala para comprobar que todo es correcto.
Por otra parte, si no piensas modificar la clave ajena, no la incluyas en la sentencia UPDATE y evitarás problemas.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)