sql >> Base de Datos >  >> RDS >> Mysql

Diferenciar entre 'ninguna fila se vio afectada' y filas ACTUALIZADAS con éxito, al mismo valor (MySQL y PHP)

Una solución simple serían dos consultas.

Primero, ejecute una consulta SELECT para verificar si la fila existe usando mysqli_num_rows().

Luego, si la fila existe, puede ejecutar la consulta UPDATE y usar mysqli_affected_rows().

[EDITAR]

... Sugeriré una alternativa potencial para cualquiera que busque una sola llamada. No sé si está interesado en hacer INSERCIONES o puramente ACTUALIZACIONES. A continuación hay algo para reflexionar:

Del comentario superior @ http://php.net/manual/en/ mysqli.afected-rows.php :

En las consultas "INSERT INTO ON DUPLICATE KEY UPDATE", aunque uno puede esperar que las filas afectadas devuelvan solo 0 o 1 por fila en las consultas exitosas, de hecho puede devolver 2.

Del manual de Mysql:"Con ON DUPLICATE KEY UPDATE, el valor de las filas afectadas por fila es 1 si la fila se inserta como una fila nueva y 2 si se actualiza una fila existente".

Ver:http://dev.mysql.com /doc/refman/5.0/en/insertar-en-duplicado.html

Aquí está el desglose de la suma por fila :

+0:​​una fila no se actualizó ni se insertó (probablemente porque la fila ya existía, pero en realidad no se cambiaron los valores de los campos durante la ACTUALIZACIÓN)

+1:se insertó una fila

+2:se actualizó una fila

¿Puedes adaptarlo a tus necesidades?