¿Cómo puedo saber si mi actualización es correcta o no? actualizo usando un nombre where uniqueName =, así que siempre debería actualizar solamente 0 filas o 1. ¿Cuál es una buena manera de verificar si actualicé una fila o no?fila (s) afectadas en la actualización de mysql con PHP
Respuesta
mysql_affected_rows()
devolverá el número de filas afectadas por su actualización.
http://us.php.net/manual/en/function.mysql-affected-rows.php
Use mysql_affected_rows
.
Esto podría devolver 0 si los datos actualizados en la consulta son los mismos que ya están en la base de datos, por lo que puede devolver 0 incluso si la consulta fue exitosa pero se cambiaron 0 filas. Pero supongo que su caso de uso no tendrá este escenario. – andho
Esto puede aplicarse, pero si tal vez escribió "$ query = mysql_query ($ sql);", entonces "$ query" contendría un "1" si fuera exitoso, de otro modo "0". – NessDan
si su consulta de actualización se encuentra en una variable llamada $ consulta, puede hacerlo;
$result = mysql_query($query);
if($result){
//succes!
} else {
//fail!
}
Espero que esto ayude. Si solo quiere saber si su consulta se ejecutó con éxito, esto servirá. Si realmente desea saber cuántas filas se ven afectadas, use las otras sugerencias.
Esto solo devolverá 'false' si la consulta está mal formada. Incluso si el 'UPDATE' opera en cero filas, esto mostrará" ¡éxito! " – brianreavis
Esto solo indicará si la consulta se ejecutó correctamente, no cuántas filas se vieron afectadas. –
trate de usar mysql_affected_rows([$link])
Realmente no hay forma de saberlo. Digamos que la tabla tbl_numbers (id, value) tiene filas (1, "uno") y (2, "dos");
$result1="update tbl_numbers set value='first' where id=1";
Si marca $ resultado1 en si la cláusula devuelve verdadero y mysql_affected_rows() devuelve 1.
Sin embargo, para $result2="update tbl_numbers set value='two' where id=2";
Si marca $ result2 en si la cláusula devuelve verdadero y mysql_affected_rows() devuelve 0.
y, por $result3="update tbl_numbers set value='three' where id=3";
Si marca $ result3 en si la cláusula devuelve verdadero y mysql_affected_rows() devuelve 0.
Esto es útil. Gracias – hriziya
¿y qué si el usuario vuelve a enviar datos que ya son los mismos que la información en el DB? Si la memoria sirve eso devolvería mysql_affected_rows() con un valor de 0 porque por definición no se actualizaron filas en el proceso. Sin embargo, la consulta en sí misma fue exitosa.
La solución a esto sería ya sea a prueba su contenido antes de la inserción o usando:
$result = mysql_query($q);
if(mysql_affected_rows() == 0)
$state = $result ? "Success" : "Fail";
esta manera se llega a comprobar si se han actualizado las filas y si no se puede comprobar si se trataba de un mal funcionamiento o solo repita datos.
4 resultados posibles: mal funcionamiento, actualización de datos, repetición de datos o clave no encontrada. Desafortunadamente, la verificación de errores no lo ayudará a distinguir entre la clave no encontrada y la repetición de datos. –
Llego bastante tarde aquí, pero siempre puedes forzar una falla en ninguna coincidencia si cambias tu consulta.
Para la tabla 'foo' con columnas 'ID' y 'valor'. expresión de coincidencia: ID = 4
update foo
join (select ID as nearID,
ID = 4
as matched from foo order by matched desc limit 0, 1) as t on nearID = ID
set value='somedata2'
, ID = if(matched, nearID, 'nomatch')
Es probable que sea más fácil sólo para cambiar la tabla para incluir ya sea una marca de tiempo o número de secuencia de actualización lugar sin embargo. (ya que esos cambiarían en cada actualización)
mysql_affected_rows ($ link) es correcto pero se depreció .. mysqli_affected_rows ($ link) se debe usar ahora.
Si se utiliza PDO, filas afectadas se pueden obtener usando rowCount() función de la siguiente manera:
/* Delete all rows from the FRUIT table */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* Return number of rows that were deleted */
print("Return number of rows that were deleted:\n");
$count = $del->rowCount();
print("Deleted $count rows.\n");
Si está utilizando declaración preparada ..
//query
$stmt = $conn->prepare("UPDATE user SET name = 'Jack' WHERE id = ?");
//bind parameters
$stmt->bind_param("i", $id);
//execute
$stmt->execute();
//updated row count
echo $stmt->affected_rows;
echo " rows updated";
- 1. ¿Por qué hay un extra? (1 fila (s) afectadas) "
- 2. seleccionar las filas afectadas por una actualización
- 3. Consultas PHP MySQL con% s y% d
- 4. actualización de la fila en una tabla MySQL
- 5. PHP Comprobar MySQL Última fila
- 6. Obtener el número de filas afectadas en una declaración de actualización de MySQL?
- 7. Seleccionar fila (s) aleatorio en SQLite
- 8. Número de filas afectadas por una ACTUALIZACIÓN en PL/SQL
- 9. MySQL return Deadlock con la fila de inserción y FK está bloqueado 'para la actualización'
- 10. Obtener valor actualizado en MySQL en lugar de filas afectadas
- 11. Selección Una fila de PHP MySQL Query
- 12. PHP/mysql obtiene el número de filas afectadas de la instrucción UPDATE
- 13. MySQL consulta UPDATE devuelve "0 filas afectadas"
- 14. Eliminando la enésima fila mysql
- 15. Seleccione la fila más reciente con GROUP BY en MySQL
- 16. fila de actualización con datos de otra fila en la misma mesa
- 17. MySQL disparador 'actualización de la columna' sintaxis
- 18. Python MySQL instrucción de actualización
- 19. ¿ACTUALIZAR/ELIMINAR en mysql y obtener la lista de identificadores de fila afectados?
- 20. Problema con la declaración preparada de ACTUALIZACIÓN en PHP
- 21. actualización con join statement mysql?
- 22. PHP, MySQL error: recuento de columnas no corresponde al número en la fila 1
- 23. actualización Panel fila equivocada
- 24. Seleccionar el recuento para cada fila distinta (mysql y php)
- 25. Actualización de MySQL con sub selección
- 26. cuenta el número de filas que se verán afectadas antes de la actualización en el desencadenante
- 27. Actualizar una fila completa en MySQL
- 28. actualización de MySQL con expresión regular
- 29. ¿Cómo determino la (s) extensión (es) asociada (s) con un tipo MIME en PHP?
- 30. Obteniendo el número de filas afectadas por una ACTUALIZACIÓN en PostgreSQL
Pero devuelve 0 cuando tiene éxito y pone los mismos datos que ya están en la tabla. – madlopt