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;
mysql_affected_rows の例
]]>
&example.outputs.similar;
トランザクションを利用した mysql_affected_rows の例
]]>
&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