Foros del Web » Programando para Internet » PHP »

Bajas y modificaciones de registros no existentes

Estas en el tema de Bajas y modificaciones de registros no existentes en el foro de PHP en Foros del Web. Buenos días comunidad, mi duda es la siguiente: Utilizo la tabla DEPT {deptno,dname,loc} que todo el mundo conoce. Cuando borro un registro no existente de ...
  #1 (permalink)  
Antiguo 04/02/2015, 05:49
 
Fecha de Ingreso: enero-2013
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta Bajas y modificaciones de registros no existentes

Buenos días comunidad, mi duda es la siguiente:
Utilizo la tabla DEPT {deptno,dname,loc} que todo el mundo conoce.
Cuando borro un registro no existente de la tabla, por ejemplo delete from dept where deptno = 80 (el departamento 80 se supone que no existe en la tabla), Mysql no produce ningún tipo de error y por tanto el resultado de la sentencia PHP, msqli_query($conexion,'Delete from dept where deptno = 80') es TRUE.

Lo mismo pasa si intento modificar un registro no existente o si NO introduzco un valor en un campo declarado como NOT NULL.

La gran mayoria de ejemplos que aparecen en los manuales utilizan la misma lógica de programacion, establecen la conexion, ejecutan la sentencia (select, insert, delete o update) con mysqli_query() y preguntan por el resultado, en la idea de que si se borra o modifica un registro no existente el programa muestre el mensaje de error programado por el programador (por ej: No se ha podido borrar el registro).

Mi duda por tanto es si el comportamiento de Mysql es asi y como se resuelve normalmente dicha situacion en una aplicacion típica de Altas, Bajas y modicaciones de registros
  #2 (permalink)  
Antiguo 04/02/2015, 06:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bajas y modificaciones de registros no existentes

Tu pregunta es algo mezclado entre programación y BBDD, la solución que buscas está en realidad del lado de PHP y no de MySQL, porque MySQL no está cometiendo ningun error.

Te lo explico de este modo: En los lenguajes de programación se valida el resultado de una ejecución no para saber si la query en sí trajo resultados, sino para verificar que no hubo fallos de ejecución. Simplemente es eso.

Cuando la base devuelve TRUE significa simplemente que no hubo errores sintacticos, de servidor, de conexión, de soporte, de permisos, etc... Pero eso no significa que haya hecho o devuelto algo.

1) Una consulta SLEECT puede no fallar, pero tampoco devolver datos, porque no hay datos que cumplan la condición. Sencillamente devolverá una tabla vacía, donde existen los encabezados de cada columna, pero no hay registros de datos.
Y eso no es un error.

2) Un INSERT puede fallar por datos, y dependiendo de si se incluyó la clausula IGNORE o no en la sentencia, puede o no devolver un error.

3) UPDATE puede devolver errores por datos, pero si no se cumplen las condiciones no devuelve error. Simplemente no cambio nada.

El DELETE, en cambio, no devuelve errores, porque si falla por datos que no se cumplen, no hace nada.
Pero en todos los casos (INSERT/UPDATE/DELETE) MySQL devuelve cierta información clave: La cantidad de registros afectados, y eso es lo que tienes que validar, además de si hubo o no errores.

¿Se entiende?

Las librerías de acceso a datos como las de PHP para MYSQL tienen funciones que pueden leer la información de ese dato que MySQL devuelve. Simplemente debes aprender a usarla.

Muevo tu post a PHP para que te ayuden con esa parte.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/02/2015, 06:31
 
Fecha de Ingreso: enero-2013
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Mensaje Respuesta: Bajas y modificaciones de registros no existentes

OK, gracias. mi enfoque era erroneo, tratare de utilizar mysqli_affected_rows()

PD. No se mover el tema a desarrollo PHP
  #4 (permalink)  
Antiguo 04/02/2015, 07:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bajas y modificaciones de registros no existentes

Sólo los moderadores podemos mover los posts de los foros que moderamos.
Cuando quieras que muevan uno, lo notificas reportandolo (icono de triangulo rojo). De todos modos ya lo moví yo.

Posdata: Se me olvidó un caso en que DELETE puede devovler errores, y es cuando hay errores de columnas o JOINs, es decir iguales errores que en el resto de las sentencias, pero no específicamente por datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 04/02/2015, 08:09
 
Fecha de Ingreso: enero-2013
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Bajas y modificaciones de registros no existentes

Alguien tiene algún ejemplo o referencia de aplicacion de ABM de una tabla
  #6 (permalink)  
Antiguo 04/02/2015, 08:10
 
Fecha de Ingreso: enero-2013
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Bajas y modificaciones de registros no existentes

Perdón, me refiero a un aplicacion PHP con msqli procedural que realice altas,bajas, modificaciones y consultas de una tabla

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:24.