8768 sujets

Développement web côté serveur, CMS

Bonjour,

Je viens de terminer ma migration de php 5.4 vers 7 pour la partie développement du code et j'ai une question.

Faut il obligatoirement utilisé :

$req -> closeCursor();

Pour fermer la connexion à la bdd ? J'ai lue sur le net que c'était pas obligatoire en pdo.

Je souhaite donc avoir votre avis sur la question.

Si vous avez des trucs ou astuces pour sécurisé mon code je suis preneur. Requêtes préparé ...

Merci d'avance. Smiley smile
Modifié par Tintin75 (30 Jan 2016 - 19:11)
Administrateur
Il me semble (à confirmer) que PHP ferme de toute façon ce genre de ressources à la fin de l'exécution du script.
Modérateur
Bonjour,

closeCursor() ne sert pas à fermer la connexion avec la base de données.

Elle sert à finir proprement une série de fetch().

En théorie, quand on exécute une requête (via query() ou execute()), puis qu'on récupère les données trouvées dans la base avec une série de fetch(), il convient de faire un closeCursor() avant de faire une autre exécution de requête (via query() ou execute()).

En pratique, si on utilise MySql, ça ne sert à rien car MySql sait faire une nouvelle exécution de requête sans qu'il ait eu de closeCursor() après la précédente exécution.

Si on utilise autre chose que MySql, ou si on envisage de migrer vers autre chose que MySql un jour ou l'autre, ou si on tient à faire un code le plus portable possible, alors closeCursor() peut être utilisé, mais après chaque série de fetch().

Amicalement,
Modifié par parsimonhi (31 Jan 2016 - 00:42)
Ça dépend en fait des pilotes de ta bdd. Certains ne nécessitent pas de closeCursor tandis que d'autres généreront une erreur si la requête précédente n'est pas libérée.
Merci pour vos conseils. Sans le forum je ne serai pas venu à bout de ma migration de mon code.

Bon dimanche. Smiley smile
Modifié par Tintin75 (31 Jan 2016 - 08:53)