PDOStatement::closeCursor — 關閉遊標,使語句能再次執行。 (PHP 5 >= 5.1.0, PECL pdo >= 0.9.0)
bool PDOStatement::closeCursor ( void )
PDOStatement::closeCursor() 釋放到資料庫服務的連接,以便發出其他SQL 語句,但使語句處於可以再次執行的狀態。
當上一個執行的PDOStatement 物件仍有未取行時,此方法對那些不支援再執行一個PDOStatement 物件的資料庫驅動非常有用。 如果資料庫驅動受此限制,則可能出現失序錯誤的問題。
PDOStatement::closeCursor() 要么是一個可選驅動的特有方法(效率最高)來實現,要么是在沒有驅動特定的功能時作為一般的PDO 備用來實現。一般的備用語意上與下面的PHP 程式碼相同:
<?phpdo { while ($stmt->fetch()) ; if (!$stmt->nextRowset()) break;} while (true);?>
成功時回傳TRUE, 或在失敗時回傳FALSE。
在下面範例中,$stmt PDOStatement 物件傳回多行,但應用程式只取第一行,讓PDOStatement 物件處於一個有未取行的狀態。為確保應用程式對所有資料庫驅動程式都能正常運作,在執行$otherStmt PDOStatement 物件前,$stmt 呼叫一次PDOStatement::closeCursor() 。
<?php/* 建立PDOStatement 物件*/$stmt = $dbh->prepare('SELECT foo FROM bar');/* 建立第二個PDOStatement 物件*/$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');/* 執行第一條語句*/$stmt->execute();/*從結果集中只取出第一行*/$stmt->fetch();/* The following call to closeCursor() may be required by some drivers */$stmt->closeCursor();/* 現在可以執行第二條語句了*/$otherStmt->execute();?>