2012-04-22 21 views
8

En la documentación de MySQL, hay una nota acerca del uso de mysql_affected_rows después de una confirmación de transacción: http://php.net/manual/en/function.mysql-affected-rows.phpResultado PDOStatement :: rowCount cuando se usa después de PDO :: commit?

Nota: Las transacciones
Si está utilizando transacciones, es necesario llamar a mysql_affected_rows() después su consulta INSERT, UPDATE o DELETE, no después de COMMIT.

Sin embargo, no hay tal nota en la PDOStatement::rowCount doc: http://www.php.net/manual/en/pdostatement.rowcount.php

¿Significa esto el commit no afectará el recuento de filas afectadas después de INSERT, UPDATE o DELETE cuando se utiliza el objeto PDO?

+0

después de una confirmación, el significado de 'affected_rows' no está claro. ¿Es el número total de filas afectadas por la transacción ENTERA? ¿O es solo el número de filas realizadas la última operación dentro de la transacción? Si hubieron transacciones anidadas que se retrotraeron, también se contaron las filas afectadas/deshechas, etc ... –

+0

@MarcB El problema es que es 'PDOStatement-> rowCount()' es decir, 'PDO-> rowCount() 'por lo tanto, DEBERÍA contar en filas la última consulta, no la última transacción. – Ozzy

+0

mysql_affected_rows() es otra forma de hacer PDOStatement-> rowCount(). Ambos solo se pueden invocar después de que se realizó un MySQL, porque de lo contrario no se verían afectadas las filas. –

Respuesta

12

Se devuelve una PDOStatement para cada consulta que se ejecuta. Podrá usar PDOStatement-> rowCount() en cualquier momento en su código (durante o después de una transacción y rollback/commit no importa). Cada objeto se ocupa de mantenerse a sí mismo.

La razón por la cual mysql_affected_rows tiene esa nota de transacción se debe a que solo conoce un único recurso de conexión de mysql. Esto significa que cuando completa la transacción (commit/rollback) se ha enviado una nueva consulta al DB, lo que altera el resultado que se está procesando para el número de filas afectadas.

Cuestiones relacionadas