PHP mysql_affected_rows() 関数

定義と使用法

mysql_affected_rows() 関数は、前回の MySQL 操作が影響を与えたレコード行数を返します。

文法

mysql_affected_rows(link_identifier)
パラメータ 説明
link_identifier 必須。MySQLの接続識別子。指定されていない場合、最後に使用された接続がデフォルトで使用されます。 mysql_connect() オープンしている接続。 mysql_connect() 接続を確立し、それを使用します。予期せぬことが発生し、接続が見つからない場合や接続ができない場合、システムは E_WARNING 水準の警告メッセージを出力します。

説明

最後に行った link_identifier 関連する INSERT、UPDATE または DELETE クエリが影響を与えたレコード行数。

返値

成功した場合、影響を受けた行の数を返します。最後のクエリが失敗した場合、関数は -1 を返します。

最近の操作が条件(WHERE)を持たない DELETE 検索であれば、テーブルのすべてのレコードが削除されますが、この関数の返値は 4.1.2 版以前は常に 0 でした。

UPDATE 検索を使用する場合、MySQL は元の値と新しい値が同じ列を更新しません。これにより、mysql_affected_rows() 関数の返値はクエリ条件に一致するレコード数ではなく、実際に変更されたレコード数のみが返されます。

REPLACE 文はまず同じ主キーを持つレコードを削除し、新しいレコードを挿入します。この関数は削除されたレコード数と挿入されたレコード数の合計を返します。

<?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
  {
  die("接続できません: " . mysql_error());
  }
mysql_select_db("mydb");
mysql_query("DELETE FROM mytable WHERE id < 5");
$rc = mysql_affected_rows();;
echo "削除されたレコード: " . $rc;
mysql_close($con);
?>

出力:

削除されたレコード: 4