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を戻します。