Page 1 sur 2
PDO, pk ?
Posté : 15 avr. 2006, 16:07
par Ak4.max
Voilà j'ai lu un petit truc sur le PDO :
http://www.phpteam.net/index.php?option ... &Itemid=54
Et je voulais savoir quel sont les avantage à faire comme ça au lieu de la manière "normal" ?
Merci d'avance
Posté : 15 avr. 2006, 16:51
par ak4.max
Dsl mais je en sais pas si le topic est bien placé ...
Posté : 15 avr. 2006, 19:13
par Cyrano
Dsl mais je en sais pas si le topic est bien placé ...
Déménagé, ça concerne PHP 5 : Pour ta question : qu'est-ce que tu appelles "la manière normale" ?
Posté : 15 avr. 2006, 19:24
par Ultiny
La mannière normal c'est mysql_connect()...
Bon ba je suis déçu, je decouvre cette extension en même temps que ce post et je vois ceci :
PDO est compatible avec MySQL 3.x/4.0
Qu'elle domage, moi qui utilise MySQL5 ](*,)
Pour te répondre sans même la connaitre, cette extension permet de passer d'un SGBD à l'autre sans problème et sans reformuler tes requêtes SQL.
Posté : 15 avr. 2006, 20:36
par ak4.max
Rien que pour ça ??
enfin bon ça fais plus pro :p
Posté : 15 avr. 2006, 22:16
par ak4.max
Et ça marche avec phpmyadmin ?
Posté : 15 avr. 2006, 23:17
par Cyrano
Tu mélanges un peu tout : phpMyAdmin est un programme en PHP qui permet de gérer des bases de données MySQL, pas d'autres bases. Pour le transformer en gestionnaire de toutes sortes de bases de données, ce ne serait pas techniquement impossible, mais il faudrait profondément transformer le code et effectivement utiliser une couche d'abstraction comme PDO et dans ce cas, on pourrait avec la même application gérer toutes sortes de SGBD différents.
Un autre intérêt de PDO comme des couches d'abstraction en général, c'est la portabilité du code. Tu n'auras pas besoin de ré-écrire une grande partie du code pour l'utiliser avec différentes applications. Il te suffira d'utiliser les classe PDO et il te restera beaucoup moins de code à écrire pour le même résultat qu'avec ce que tu nommes la méthode classique.
Posté : 15 avr. 2006, 23:24
par Ultiny
Je suis aussi tes expliquations Cyrano car je decouvre.
Par exemple si j'ai une requete, j'ai pas besoin de modifier tout les occurences de mysql_query par mssql_query lorsque je veux changer de db, c'est bien ça?
Posté : 15 avr. 2006, 23:35
par Cyrano
Sommairement oui : le SQL est relativement standard, donc une requête sera sensiblement la même pour MySQL, PostGreSQL, MS-SQL Serveur ou Oracle par exemple: ce qui change, c'est le genre de fonction à utiliser pour les envoyer et les faire exécuter.
Donc l'idée comme PDO, c'est qu'on appelle la classe en lui précisant les paramètres nécessaires à utiliser : en clair: quel SGBD, login, mot de passe, éléments qu'on nomme souvent "dsn" : ensuite, on emploie non pas par exemple mysql_query mais (je dis une ânerie sans doute, jamais utilisé PDO encore) query_do avec la requête en paramètre : la classe PDO va selon les premiers paramètres utiliser la fonction appropriée pour le SGBD.
Si tu migre un jour ta base MySQL vers Oracle par exemple : de façon très basique, tout ce que tu auras à modifier dans ton code, c'est le "dsn". Grosso modo, 15 secondes de boulot.
En méthode classique, pour faire ça, il faudrait faire le tour de ton application pour changer toutes les fonctions mysql_qqch() en ora_qqch() : selon la taille de l'application, de une heure à trois semaines.
Posté : 15 avr. 2006, 23:39
par Ultiny
Ou alors, comme moi (ou les gros projects) on fait une classe db ou l'on mets ses fonctions de base de données et on à qu'elle à modifier le jour d'un changement.
Posté : 15 avr. 2006, 23:42
par Cyrano
Ben c'est précisément ce que fait PDO, également PEAR::DB par exemple et d'autres encore.
L'idée générale, c'est qu'au lieu d'avoir 20 ou 30 fonctions spécifiques pour chaque SGBD, tu utilises seulement des fonctions spécifiques à une classe et la classe elle-même intègre les autres sans que tu aies à modifier quoique ce soit.
Posté : 16 avr. 2006, 08:38
par ak4.max
Moi se que je comprend pas, c'est avce quel bdd marche pdo ??
Posté : 16 avr. 2006, 08:48
par Cyrano
Ça dépend de ta configuration : regarde ton phpinfo() et descend dans la page, tu vas voir les SGBD supportés, ils sont indiqués.
Posté : 16 avr. 2006, 08:53
par ak4.max
j'ai pas encore d'hebergement. Sinon PDO marche avec phpmyadmin ? ?
Posté : 16 avr. 2006, 08:59
par Cyrano
J'ai répondu sur ce point hier soir : et je n'ai pas l'impression que tu aies compris la réponse, mais j'en viens à me demander ce que tu as compris de ce qu'est la nature exacte de PDO et de ce qu'est au juste phpMyAdmin ?
