Estoy tratando de obtener el número de filas afectadas en una simple consulta de actualización de MySQL. Sin embargo, cuando ejecuto este código a continuación, PHP mysql_affected_rows() siempre es igual a 0. No importa si foo = 1 ya (en cuyo caso la función debería correctamente devolver 0, ya que no se cambiaron filas), o si foo actualmente es igual a algunos otro entero (en cuyo caso la función debería devolver 1).mysql_affected_rows() devuelve 0 para la instrucción UPDATE, incluso cuando realmente ocurre una actualización
$updateQuery = "UPDATE myTable SET foo=1 WHERE bar=2";
mysql_query($updateQuery);
if (mysql_affected_rows() > 0) {
echo "affected!";
}
else {
echo "not affected"; // always prints not affected
}
La instrucción UPDATE sí funciona. La INT se cambia en mi base de datos. También he verificado dos veces que la conexión a la base de datos no se está cerrando de antemano ni nada raro. Tenga en cuenta que mysql_affected_rows no requiere necesariamente que pase un identificador de enlace de conexión, aunque también lo he intentado.
detalles sobre la función: mysql_affected_rows
alguna idea?
está usted seguro de que el registro se actualiza? Asegúrese de configurar foo igual a algo que no sea 1 antes de ejecutar la prueba. – northpole
Por casualidad, ¿podría llamarse su página dos veces, tal vez debido a una regla de reescritura? Esto haría que los datos se actualicen la primera vez, y luego no la segunda vez cuando vea el resultado final ... No estaría de más comprobar los registros de su servidor web. –
¿Ha confirmado que en realidad está devolviendo 0 y no tiene un valor negativo? – Jodaka