PDO, pk ?

Ak4.max
Invité n'ayant pas de compte PHPfrance

15 avr. 2006, 16:07

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

Petit nouveau ! | 9 Messages

15 avr. 2006, 16:51

Dsl mais je en sais pas si le topic est bien placé ...

Mammouth du PHP | 19672 Messages

15 avr. 2006, 19:13

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" ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 656 Messages

15 avr. 2006, 19:24

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.

Petit nouveau ! | 9 Messages

15 avr. 2006, 20:36

Rien que pour ça ??
enfin bon ça fais plus pro :p

Petit nouveau ! | 9 Messages

15 avr. 2006, 22:16

Et ça marche avec phpmyadmin ?

Mammouth du PHP | 19672 Messages

15 avr. 2006, 23:17

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 656 Messages

15 avr. 2006, 23:24

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?

Mammouth du PHP | 19672 Messages

15 avr. 2006, 23:35

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 656 Messages

15 avr. 2006, 23:39

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.

Mammouth du PHP | 19672 Messages

15 avr. 2006, 23:42

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 9 Messages

16 avr. 2006, 08:38

Moi se que je comprend pas, c'est avce quel bdd marche pdo ??

Mammouth du PHP | 19672 Messages

16 avr. 2006, 08:48

Ç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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 9 Messages

16 avr. 2006, 08:53

j'ai pas encore d'hebergement. Sinon PDO marche avec phpmyadmin ? ?

Mammouth du PHP | 19672 Messages

16 avr. 2006, 08:59

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 ? :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: