PDOStatement::closeCursor — Fecha o cursor para que a instrução possa ser executada novamente. (PHP 5 >= 5.1.0, PECL pdo >= 0.9.0)
bool PDOStatement::closeCursor (void)
PDOStatement::closeCursor() libera a conexão com o serviço de banco de dados para que outras instruções SQL possam ser emitidas, mas deixa a instrução em um estado onde pode ser executada novamente.
Este método é muito útil para drivers de banco de dados que não suportam a execução de outro objeto PDOStatement quando ainda há linhas não buscadas no último objeto PDOStatement executado. Se o driver do banco de dados estiver sujeito a essa limitação, poderão ocorrer erros fora de ordem.
PDOStatement::closeCursor() é implementado como um método opcional específico do driver (o mais eficiente) ou implementado como um substituto geral do PDO quando não há funcionalidade específica do driver. A semântica geral de fallback é a mesma do seguinte código PHP:
<?phpdo { while ($stmt->fetch()) ; if (!$stmt->nextRowset()) break;} while (true);?>
Retorna TRUE em caso de sucesso ou FALSE em caso de falha.
No exemplo a seguir, o objeto PDOStatement $stmt retorna diversas linhas, mas o aplicativo busca apenas a primeira linha, deixando o objeto PDOStatement em um estado com linhas não buscadas. Para garantir que a aplicação possa ser executada normalmente com todos os drivers de banco de dados, $stmt chama PDOStatement::closeCursor() uma vez antes de executar o objeto $otherStmt PDOStatement.
<?php/* Cria um objeto PDOStatement */$stmt = $dbh->prepare('SELECT foo FROM bar');/* Cria um segundo objeto PDOStatement */$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');/* Executa a primeira instrução*/$stmt->execute();/* Busque apenas a primeira linha do conjunto de resultados */$stmt->fetch();/* A seguinte chamada para closeCursor() pode ser exigida por alguns drivers */$stmt->closeCursor();/* Agora você pode executar a segunda instrução*/$otherStmt->execute();?>