my_ulonglong mysql_affected_rows(MYSQL
*mysql)
説明
mysql_query()またはmysql_real_query()を使ってステートメントを実行した後、UPDATEのために変更されたか、DELETEのために削除されたか、またはINSERTのために挿入された行の数を戻します。SELECTステートメントに対して、mysql_affected_rows()はmysql_num_rows()と同じように作動します。
戻り値
ゼロより大きい整数は影響を与えられたか、復元された横列の数を示します。ゼロは、UPDATEステートメントに対する記録が更新されなかったか、クエリー中のWHEREクローズにマッチした列が存在していなかったか、クエリーがまだ実行されていないことを示します。-1は、クエリーがエラーを戻したか、SELECTクエリーに対して、mysql_store_result()を呼び出す前に、mysql_affected_rows()が呼び出されたことを示します。mysql_affected_rows()が未サイン値を戻すので、戻り値を(my_ulonglong)-1
(または同等な(my_ulonglong)~0)と比べることによって、-1をチェックすることができます。
エラー
なし。
例
char *stmt = "UPDATE products SET cost=cost*1.25 WHERE group=10";
mysql_query(&mysql,stmt);
printf("%ld products updated",
(long) mysql_affected_rows(&mysql));
UPDATEステートメントに対して、CLIENT_FOUND_ROWSフラグを規定する場合、mysqldに接続するとき、mysql_affected_rows()は、WHEREローズの規定に基づき、マッチさせられた行の数を戻します。そうならないと、デフォルト行動は実際に変えられた横列の数を返すはずです。
REPLACE
コマンドを使うとき、古い列を新しい列と入れ替えた場合、この例では、重複するものを削除した後、1本の列が挿入されたので、mysql_affected_rows()は2を戻すことにご注目ください。
INSERT ... ON DUPLICATE KEY
UPDATEを使って1本の列を挿入ると、その列が新しい列である場合、mysql_affected_rows()は1を戻し、既存の列を更新すると2を戻します。
