CascadiaPHP 2024

db2_num_rows

(PECL ibm_db2 >= 1.0.0)

db2_num_rows SQL 文によって変更された行の数を返す

説明

db2_num_rows(resource $stmt): int|false

SQL 文によって削除、挿入あるいは更新された行の数を返します。

SELECT 文が返す行の数を取得するには、調べたい SELECT 文と同じ述部を持つ SELECT COUNT(*) を発行し、その値を取得します。

SELECT 文が返す行の数を調べて 0 の場合には別の処理を行うようなロジックを アプリケーションで使用している場合、その代わりに db2_fetch_assoc()db2_fetch_both()db2_fetch_array() あるいは db2_fetch_row() を使用して最初の行を取得し、 結果が false の場合には別の処理を行うという方法を検討してください。

注意:

スクロール可能なカーソルを使用して SELECT 文を発行した場合は、 db2_num_rows() は SELECT 文の結果の行数を返します。 しかし、スクロール可能なカーソルを使用すると、 アプリケーションのパフォーマンスが急激に低下します。 そのため、SELECT 文の結果の行数を知りたいというだけの理由で スクロール可能なカーソルを使用するのは避けましょう。 前進のみのカーソルを使用し、SELECT COUNT(*) をコールするか フェッチ関数の返す bool 値を調べるほうが、 同じ機能をずっと高速に実現できます。

パラメータ

stmt

結果セットを含む有効な stmt リソース。

戻り値

指定したステートメントハンドルによって発行された、 直近の SQL 文によって変更された行の数を返します。 失敗した場合に false を返します

add a note

User Contributed Notes 1 note

up
-11
rmarsh221 at gmail dot com
7 years ago
$inseq = 598;
$delSql = "DELETE FROM libname.tablename WHERE inseq=?";
$stmt = db2_prepare($conn,$delSql);
$res = db2_execute($stmt,array($inseq));
if(!$res)
{
throw new Exception(db2_stmt_errormsg(), db2_stmt_error());
} else {
$rows = db2_num_rows($stmt);
if ($rows > 0) {
echo "Success! ".$inseq." record deleted from: libname.tablename:". Rows=".$rows;
} else {
echo "Row not found for delete in: ".libname.tablename";
}

}
To Top