mysql_affected_rows 一番最近の操作で変更された行の数を得る &mysql.alternative.note; mysqli_affected_rows PDOStatement::rowCount &reftitle.description; intmysql_affected_rows resourcelink_identifierNULL link_identifier と関連付けられた直近の INSERT、UPDATE、REPLACE、DELETE クエリによって変更された行の数を取得します。 &reftitle.parameters; &mysql.linkid.description; &reftitle.returnvalues; 成功した場合に変更された行の数を、直近のクエリが失敗した場合に -1 を返します。 直近のクエリが WHERE 句を含まない DELETE だった場合、テーブルから すべてのレコードが削除されますが、MySQL 4.1.2 以前のバージョンでは この関数はゼロを返します。 UPDATE を使用する場合、MySQL では新旧の値が同じときには更新処理を行いません。 このことから、必ずしも mysql_affected_rows の返す値が マッチする行の数と一致するとは限りません。返す値は実際に更新処理が行われた 行の数です。 REPLACE ステートメントは、まず最初に同じ主キーのレコードを削除した後に 新しいレコードを挿入します。この関数は、削除された行の数と 挿入された行の数を足したものを返します。 "INSERT ... ON DUPLICATE KEY UPDATE" クエリの場合の戻り値は、 新しい行を追加した場合が 1 で既存の行を更新した場合が 2 となります。 &reftitle.examples; <function>mysql_affected_rows</function> の例 ]]> &example.outputs.similar; トランザクションを利用した <function>mysql_affected_rows</function> の例 ]]> &example.outputs.similar; &reftitle.notes; トランザクション トランザクションを使用する場合には、コミット後ではなく INSERT, UPDATE, DELETE クエリの後に mysql_affected_rows をコールする必要があります。 SELECT ステートメント SELECT から返される行の数を得る際には、 mysql_num_rows が利用できます。 外部キーによる連鎖 mysql_affected_rows は、外部キー制約の ON DELETE CASCADE や ON UPDATE CASCADE で暗黙のうちに変更された行については数えません。 &reftitle.seealso; mysql_num_rows mysql_info