PDO, l'importance d'une couche abstraite pour les syntaxes.

ViPHP
ViPHP | 4674 Messages

11 juil. 2007, 11:14

Bonjour.

Depuis peu, je m'intéresse à PDO (PHP Data Object). L'énorme intérêt est d'avoir toujours les mêmes méthodes pour n'importe quel type de base de données. Nous sommes d'accord.

Mais SQL n'est pas réellement un standard. Chacun à ses petites préférences au niveau de la syntaxe (ne serait-ce qu'au niveau de la connexion avec PDO, Oracle et PgSQL ont des syntaxes très simplifiées).

Alors certes, nous n'avons plus le problème de gérer des dizaines de fonctions pour les bases de données. Mais reste le problème des différences de syntaxes.

Comment résoudre ce problème ?

PS : Je ne sais pas si c'est le bon salon, j'ai hésité à publier dans Méthodologie, mais je le squatte un peu trop en ce moment :P
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 928 Messages

11 juil. 2007, 11:19

Bonjour,
certes les SGBDR ont parfois quelques divergences au niveau de la syntaxe, mais très souvent (la majorité du temps), les requêtes sont valides sur toutes les bases. SELECT, INSERT, UPDATE sont universels. Les jointures sont gérées généralement pareil.

Les quelques cas où la syntaxe change entre la base, il te suffira de faire un switch .. case (ou un if) pour créer une requête qui marchera avec une base de donnée particulière.

ViPHP
ViPHP | 4674 Messages

11 juil. 2007, 11:37

D'accord.

Y a-t-il quelques choses à combler dans PDO ? Histoire d'avoir au moins un package Db haha :D
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 2937 Messages

13 juil. 2007, 21:51

Mis à part le cas où la syntaxe SQL peut diverger selon le SGBD (LIMIT, par exemple), je ne vois rien de problématique à l'utilisation de PDO. Donc, rien à combler pour moi. :wink:

Mammouth du PHP | 505 Messages

13 juil. 2007, 22:55

J'utilise le Zend_db en abstraction pour oracle.
Il peut utiliser la couche oci comme pdo_oci.

Pour l'instant, j'ai utilisé la couche oci.
Mais une chose que je n'ai pas encore réussi a faire, c'est dans la gestion ORM avec le Zend_Db_Table.

Exemple basique.
2 tables
table type_produit(id, libelle)
table produits(id,type_produit_id, description, prix). type_produit_id est une FK sur l'id de type_produit.

Comment faire pour faire une requete du genre en utilisant les objets ORM ?
select id, description, prix from table produits, type_produits
where type_produit_id = id and
libelle = 'kkchose' and
prix > 555

Je n'ai pas trouvé de solution propre sauf a définir une procédure spécifique dans l'obet produit.

ViPHP
ViPHP | 4674 Messages

13 juil. 2007, 23:44

Je ne connais ni Oracle, ni OCI.

Je suis même assez mauvais en base de données, je ne connais que la base (huh?) pour faire des SELECT, INSERT, UPDATE et DELETE :P

Merci Victor Brito pour ta réponse :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).