[ Foro de SQL (y MySQL) ]

Error fatal: mysqli_sql_exception no detectada:

14-Aug-2023 14:38
Invitado (GermanH)
1 Respuestas


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


15-Aug-2023 14:20
Nacho Cabanes (+84)

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.)