PDO - Différence entre Prepare et query ?

WRInaute discret
Salut à tous !

Alors je suis entrain de me mettre à jour étant donné que dans PHP6, seul PDO sera disponible.

J'ai encore quelques doutes sur l'utilisation de l'un ou de l'autre.. (prepare ou query)

L'avantage de prepare, c'est qu'il compile la requete et permet de s'en reservir plus rapidement sans refaire l'arbre je ne suis plus comment :)
M'enfin ma question n'est pas là !

Ma question est sur le point qui dit "utiliser prepare si vous vous resservai de la meme requete avec des parametres différents".
Par cette phrase, ca veut dire dans la "meme" page ? ou sur le site ?

Car admettons que j'affiche l'id 2 de mon article, si on va voir une autre page avec l'id 3, c'est compris comme la meme requete mais avec des parametres diff ?

Dans ce cas là, a quoi sert query, ou plutot dans quel cas faut il l'utiliser ?

Derniere question, il dise que apres "chaque" reqs, la fermer avec CloseCursor, et fermer egalement la connexion avec $connexion = null;

Si je fais ça, ca annule pas la possibilité de se resservir de la meme requete ? puisque la connexion est refermée ?

Et par rapport au nombre de connexion a la base en simultané, si elle est admettons de 3, et que j'ai 3 reqs, sur ma page, si a chaque req, je co, et deco, multiplié par le nbre de personnes sur la page, je fais vite atteindre la limite non ?
Ne faut il pas mieux lancer la connexion en haut et laisser php la fermer a la fin de la page ?

Merci d'avance
 
WRInaute occasionnel
Salut,

Le mieux est quand même de se référer à la doc officielle, au moins c'est écrit en français.

L'utilisation de prepare est recommandée pour les requêtes qui doivent être éxecutées plusieurs fois, ça doit faire office de cache donc gain de performance ; Et query, pour une requête "unique".
 
WRInaute discret
La qualité première d'un developpeur, c'est savoir s'auto documenter :)
Ce que j'ai fait.
C'est juste que je ne comprends justement la notion de "plusieurs fois".

Car qui dit cache, dit valable entre plusieurs pages, comme le cache sql, mais pour le coup de PDO, j'en suis pas vraiment sur !
 
WRInaute passionné
La question est intéressante.

http://fr.php.net/manual/fr/pdo.prepare.php

Néanmoins, tel que le présente l'exemple de la documentation officielle dans les exemples de code, je pense que l'optimisation d'une requête avec prepare est valable seulement durant les séquences d'execution qui suivent.
Je veux dire par là que si une autre requête est exécutée ou si la session de connexion fermée (donc fin de script et changement de page compris) il faudra évidement re-préparer la requête.

Appeler PDO::prepare() et PDOStatement::execute() pour les requêtes qui doivent être exécutées plusieurs fois avec différentes valeurs de paramètres optimisent les performances de votre application en autorisant le pilote à négocier coté client et/ou serveur avec le cache des requêtes et les metainformations, et aident à prévenir les attaques par injection SQL en éliminant le besoin de protéger les paramètres manuellement.
À mon avis le mot "cache" de la phrase doit correspondre à l'analyse la requête et création de l'arbre en mémoire.

La véritable notion de cache est sensiblement différente et impossible à combiner avec les requêtes préparées. Voir cet article si mon raisonnement est bon : http://www.valombre.net/blog/news-68-MySQL-query_cache.htm

Toutes ces conclusions viennent de ma simple déduction d'après les docs que j'ai pu lire, je suis également preneur de la vérité.
 
Discussions similaires
Haut