PDOStatement::closeCursor
  (PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)
PDOStatement::closeCursor — 
   カーソルを閉じてステートメントを再実行できるようにする
  
  
 
  説明
  
   public PDOStatement::closeCursor(): 
bool 
  
  
   このメソッドは以前に実行された PDOStatement
   オブジェクトが行をまだフェッチしていない場合に PDOStatement
   オブジェクトの実行をサポートしていないデータベースドライバに対して有用です。
   もし使用しているデータベースドライバがこの制限を受ける場合、
   out-of-sequence エラーが出力されます。
  
  
   PDOStatement::closeCursor() は、
   オプションのドライバ固有のメソッド (最大の効率を得るため)
   もしくはドライバ固有の関数がインストールされていない場合の汎用的な
   PDO フォールバックとして実装されています。
   汎用的な PDO フォールバックは、PHP
   スクリプト中に以下のようなコードを書くことと意味的に等価です。
   
<?php
do {
    while ($stmt->fetch())
        ;
    if (!$stmt->nextRowset())
        break;
} while (true);
?>
    
  
  
 
 
 
 
  例
  
   
    例1 PDOStatement::closeCursor() の例
    
     以下の例では、PDOStatement オブジェクト $stmt
     は複数の行を返しますが、このアプリケーションは先頭行のみフェッチし、
     PDOStatement オブジェクトをフェッチしていない行がある状態のままにします。
     このアプリケーションがが全てのデータベースドライバで動作するよう、
     PDOStatement オブジェクト $otherStmt を実行する前に
     $stmt に対して
     PDOStatement::closeCursor()
     の呼び出しを挿入しています。
    
<?php
/* PDOStatement オブジェクトを生成する */
$stmt = $dbh->prepare('SELECT foo FROM bar');
/* 第二の PDOStatement オブジェクトを生成する */
$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');
/* 最初の文を実行する */
$stmt->execute();
/* 結果から先頭行のみフェッチする */
$stmt->fetch();
/* 続く closeCursor() のコールはいくつかのドライバでは必要となる */
$stmt->closeCursor();
/* ここで第二の文を実行することができる */
$otherStmt->execute();
?>