8

MySQL ドキュメントにはmysql_affected_rows、トランザクションのコミット後に使用することに関する注意事項があります: http://php.net/manual/en/function.mysql-affected-rows.php

注: トランザクション トランザクション
を使用している場合、COMMIT の後ではなく、INSERT、UPDATE、または DELETE クエリの後にmysql_affected_rows()を呼び出す必要があります。

ただし、PDOStatement::rowCountドキュメントにはそのようなメモはありません: http://www.php.net/manual/en/pdostatement.rowcount.php

PDOこれは、オブジェクトを使用する場合、INSERT、UPDATE、または DELETE クエリの後に、コミットが影響を受ける行数に影響しないことを意味しますか?

4

1 に答える 1

13

実行されるクエリごとに PDOStatement が返されます。コード内でいつでも PDOStatement->rowCount() を使用できます (トランザクション中またはトランザクション後、ロールバック/コミットは関係ありません)。各オブジェクトは、それ自体を維持します。

mysql_affected_rows にそのトランザクション メモがある理由は、単一の mysql 接続リソースしか認識していないためです。これは、トランザクション (コミット/ロールバック) を完了すると、新しいクエリが DB に送信され、影響を受ける行の数に対して処理される結果が変更されることを意味します。

于 2012-04-26T16:08:08.213 に答える