PDOStatement::closeCursor

(no version information, might be only in CVS)

PDOStatement::closeCursor --  Ferme le curseur, permettant à la requête d'être de nouveau exécutée

Description

bool PDOStatement::closeCursor ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

PDOStatement::closeCursor() libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées, mais quitte la requête, permettant ainsi qu'elle soit de nouveau exécutée.

Cette méthode est utile pour les drivers de base de données qui ne supportent pas l'exécution d'objet PDOStatement lorsqu'un objet PDOStatement exécuté précédemment a encore des lignes non récupérées. Si votre driver de base de données souffre de cette limitation, le problème se manifestera de lui-même dans une erreur en dehors de la séquence.

PDOStatement::closeCursor() est implémenté soit en tant que méthode optionnelle spécifique au driver (autorisant un maximum d'efficacité), ou en tant que fallback PDO générique si aucune fonction spécifique au driver n'est installée. Le fallback générique PDO est sémantiquement la même chose que d'écrire le code suivant dans votre script PHP :
<?php
do {
    while (
$stmt->fetch())
        ;
    if (!
$stmt->nextRowset())
        break;
} while (
true);

Exemples

Exemple 1. Exemple avec PDOStatement::closeCursor()

Dans l'exemple suivant, l'objet PDOStatement $stmt retourne de multiples lignes mais l'application récupère uniquement la première ligne, laissant l'objet PDOStatement dans l'état où il lui reste des lignes non récupérées. Pour vous assurez que l'application fonctionnera avec tous les drivers de base de données, l'auteur insère un appel à la fonction PDOStatement::closeCursor() sur $stmt avant l'exécution d'objet PDOStatement $otherStmt.

<?php
// Création d'un objet PDOStatement
$stmt = $dbh->prepare('SELECT foo FROM bar');

// Création d'un second objet PDOStatement
$stmt = $dbh->prepare('SELECT foobaz FROM foobar');

// Exécute la première requête
$stmt->execute();

// Récupération de la première ligne uniquement depuis le résultat
$stmt->fetch();

// L'appel suivant à closeCursor() peut être requis par quelques drivers
$stmt->closeCursor();

// Maintenant, nous pouvons exécuter la deuxième requête
$otherStmt->execute();
?>

Voir aussi

PDOStatement::execute()

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:54