MaxDB 関数
maxdb_autocommit
MaxDB 関数
PHP Manual

# maxdb_affected_rows

# maxdb::affected_rows

(PECL maxdb >= 1.0)

maxdb_affected_rows -- maxdb::affected_rows — 直前の MaxDB の操作で変更された行数を取得する

### 説明

手続き型

int maxdb_affected_rows ( resource `$link` )

オブジェクト指向型

int $maxdb->affected_rows;

maxdb_affected_rows() は、与えられた `link` パラメータに関連した直近の INSERT、UPDATE あるいは DELETE クエリによって変更された行の数を返します。 この数が決定できない場合には、-1 を返します。

> 注意:

> SELECT 文の場合には、 maxdb_affected_rows() は maxdb_num_rows() と同じように動作します。

maxdb_affected_rows() 関数は、 テーブルを変更するようなクエリについてのみ動作します。 SELECT クエリの返す行数を調べるには、代わりに maxdb_num_rows() を使用してください。

### 返り値

ゼロより大きい整数の場合は、変更された行数あるいは取得された行数を表します。 ゼロの場合は、UPDATE ステートメントで行が更新されなかった、 WHERE 句に一致する行がなかった、あるいはクエリが実行されなかったなどを表します。 -1 の場合は、変更された行数が取得できなかったことを表します。

### 例

例1 オブジェクト指向型

`<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");
/* 接続を調べます */
if (maxdb_connect_errno()) {
printf("接続に失敗しました: %s\n", maxdb_connect_error());
exit();
}
maxdb_report (MAXDB_REPORT_OFF);
$maxdb->query("DROP TABLE mycustomer");
maxdb_report (MAXDB_REPORT_ERROR);
/* 行を挿入します */
$maxdb->query("CREATE TABLE mycustomer AS SELECT * from hotel.customer");
printf("Affected rows (INSERT): %d\n", $maxdb->affected_rows);
$maxdb->query("ALTER TABLE mycustomer ADD Status int default 0");
/* 行を更新します */
$maxdb->query("UPDATE mycustomer SET Status=1 WHERE cno > 50");
printf("Affected rows (UPDATE): %d\n", $maxdb->affected_rows);
/* 行を削除します */
$maxdb->query("DELETE FROM mycustomer WHERE cno < 50");
printf("Affected rows (DELETE): %d\n", $maxdb->affected_rows);
/* すべての行を選択します */
$result = $maxdb->query("SELECT title FROM mycustomer");
printf("Affected rows (SELECT): %d\n", $maxdb->affected_rows);
$result->close();
/* テーブルを削除します */
$maxdb->query("DROP TABLE mycustomer");
/* 接続を閉じます */
$maxdb->close();
?>`

例2 手続き型

`<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");
if (!$link) {
printf("localhost 接続できません。エラー: %s\n", maxdb_connect_error());
exit();
}
maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP TABLE mycustomer");
maxdb_report (MAXDB_REPORT_ERROR);
/* 行を挿入します */
maxdb_query($link, "CREATE TABLE mycustomer AS SELECT * from hotel.customer");
printf("Affected rows (INSERT): %d\n", maxdb_affected_rows($link));
maxdb_query($link, "ALTER TABLE mycustomer ADD Status int default 0");
/* 行を更新します */
maxdb_query($link, "UPDATE mycustomer SET Status=1 WHERE cno > 50");
printf("Affected rows (UPDATE): %d\n", maxdb_affected_rows($link));
/* 行を削除します */
maxdb_query($link, "DELETE FROM mycustomer WHERE cno < 50");
printf("Affected rows (DELETE): %d\n", maxdb_affected_rows($link));
/* すべての行を選択します */
$result = maxdb_query($link, "SELECT title FROM mycustomer");
printf("Affected rows (SELECT): %d\n", maxdb_affected_rows($link));
maxdb_free_result($result);
/* テーブルを削除します */
maxdb_query($link, "DROP TABLE mycustomer");
/* 接続を閉じます */
maxdb_close($link);
?>`

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

    Affected rows (INSERT): 15
    Affected rows (UPDATE): 15
    Affected rows (DELETE): 0
    Affected rows (SELECT): 15

### 参考

- maxdb_num_rows() - 結果の行数を取得する
- maxdb_info() - 直近に実行したクエリについての情報を取得する

MaxDB 関数
maxdb_autocommit
MaxDB 関数
PHP Manual