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()

В следующем примере объект 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();

/* The following call to closeCursor() may be required by some drivers */
$stmt->closeCursor();

/*  现在可以执行第二条语句了 */
$otherStmt->execute();
?>

PHP PDO 参考手册Справочное руководство по PHP PDO

Другие расширения