関数・クラス解説

mysql_affected_rows

version:PHP 4, PHP 5 (公式)

一番最近の操作で変更された行の数を得る

公式リファレンス

書式

mysql_affected_rows ([ resource $link_identifier = NULL ] ) : int

説明

link_identifier と関連付けられた直近の INSERT、UPDATE、REPLACE、DELETE クエリによって変更された行の数を取得します。

パラメータ

link_identifier
MySQL 接続。指定されない場合、mysql_connect() により直近にオープンされたリンクが指定されたと仮定されます。そのようなリンクがない場合、引数を指定せずにmysql_connect() がコールした時と同様にリンクを確立します。リンクが見付からない、または、確立できない場合、E_WARNING レベルのエラーが生成されます。

返値

成功した場合に変更された行の数を、直近のクエリが失敗した場合に -1 を返します。 直近のクエリが WHERE 句を含まない DELETE だった場合、テーブルから すべてのレコードが削除されますが、MySQL 4.1.2 以前のバージョンでは この関数はゼロを返します。 UPDATE を使用する場合、MySQL では新旧の値が同じときには更新処理を行いません。 このことから、必ずしも mysql_affected_rows() の返す値が マッチする行の数と一致するとは限りません。返す値は実際に更新処理が行われた 行の数です。 REPLACE ステートメントは、まず最初に同じ主キーのレコードを削除した後に 新しいレコードを挿入します。この関数は、削除された行の数と 挿入された行の数を足したものを返します。 "INSERT ... ON DUPLICATE KEY UPDATE" クエリの場合の返り値は、 新しい行を追加した場合が 1 で既存の行を更新した場合が 2 となります。

注意

注意: トランザクション トランザクションを使用する場合には、コミット後ではなく INSERT, UPDATE, DELETE クエリの後に mysql_affected_rows() をコールする必要があります。
注意: SELECT ステートメント SELECT から返される行の数を得る際には、 mysql_num_rows() が利用できます。
注意: 外部キーによる連鎖 mysql_affected_rows() は、外部キー制約の ON DELETE CASCADE や ON UPDATE CASCADE で暗黙のうちに変更された行については数えません。
警告 この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。MySQLi あるいはPDO_MySQL を使うべきです。詳細な情報はMySQL: API の選択 やそれに関連する FAQ を参照ください。この関数の代替として、これらが使えます。
  • mysqli_affected_rows()
  • PDOStatement::rowCount()

サンプル

例1 mysql_affected_rows() の例

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) {     die('Could not connect: ' . mysql_error()); } mysql_select_db('mydb'); /* これは、削除されたレコードの正しい数をかえずはず */ mysql_query('DELETE FROM mytable WHERE id < 10'); printf("Records deleted: %d\n", mysql_affected_rows()); /* 決して真にはならない where 条件なので、結果は 0 となるはず */ mysql_query('DELETE FROM mytable WHERE 0'); printf("Records deleted: %d\n", mysql_affected_rows());

上の例の出力は、たとえば以下のようになります。

Records deleted: 10 Records deleted: 0

例2 トランザクションを利用した mysql_affected_rows() の例

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) {     die('Could not connect: ' . mysql_error()); } mysql_select_db('mydb'); /* レコードの更新 */ mysql_query("UPDATE mytable SET used=1 WHERE id < 10"); printf ("Updated records: %d\n", mysql_affected_rows()); mysql_query("COMMIT");

上の例の出力は、たとえば以下のようになります。

Updated Records: 10

参考

  • mysql_num_rows() - 結果における行の数を得る
  • mysql_info() - 直近のクエリについての情報を得る
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール