Latest web development tutorials

PDOStatement::closeCursor

PHP PDO 參考手冊 PHP PDO參考手冊

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 代碼相同:

<?php
do {
    while ($stmt->fetch())
        ;
    if (!$stmt->nextRowset())
        break;
} while (true);
?>

返回值

成功時返回TRUE, 或者在失敗時返回FALSE。


實例

一個PDOStatement::closeCursor() 的例子

在下面例子中,$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();
?>

PHP PDO 參考手冊 PHP PDO參考手冊