Gérer la PDO tous serveur

Résolu
azqsazqs Messages postés 83 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 28 novembre 2010 - 7 mars 2009 à 13:38
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 8 mars 2009 à 13:44
Bonjour,

Je suis en train de bosser sur la PDO, ce qui est tout nouveau pour moi, mais je m'en sort pas trop mal.

Mais j'ai un problème sur le type de serveur utilisé. Je m'explique, je voudrais pouvoir extraire le type de serveur BDD utilisé (Mysql, Sqllite, oracle...) et qu'il me donne la syntaxe de connection.

Ensuite, est-ce qu'une requête de type query("Select * from...") est compatible toute BDD confondus ? (j'espère sinon quel interet à la PDO )

Merci d'avance pour vos réponses.

----------------------------------------------------------------------------
Il y a 10 types de personnes dans le monde, ceux qui comprennent le binaire et les autres.

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 mars 2009 à 13:44
Dans ce cas, ce n'est pas au code à deviner quel serveur de DB va être utilisé, mais au développeur qui va se servir du code.
Donc utiliser PDO est très bien, c'est une abstraction, tout va bien. Tu peux y ajouter le cas échéant une méthode d'usinage mais en dehors de ça, tu n'as rien besoin de faire de plus : l'utilisateur de ton cms sait sur quelle DB il va bosser...il lui suffira de le spécifier dans la configuration de ton CMS, voilà tout. Inutile d'essayer de te connecter en utilisant le moteur de toutes les DB implémentées dans PDO, ça ne sert strictement à rien.
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 mars 2009 à 16:25
salut

tant que tu respectes la norme SQL, il est probable que ca soit compatible.
0
azqsazqs Messages postés 83 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 28 novembre 2010
7 mars 2009 à 18:38
J'ai un code:

$bdd = array();
// Pour MySQL :
$bdd[0] = 'mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd;
// Pour PostgreSQL
$bdd[1] = 'pgsql:host=$PARAM_hote port=4444 dbname=$PARAM_nom_bd user=login password=mdp';
// Pour Oracle
$bdd[2] = 'OCI:dbname=$PARAM_nom_bd , login, mdp';

foreach($bdd as $conx)
{
try {
$connexion = new PDO($conx, $login, $mdp);
echo "OK";
}
catch (PDOException $error) {
die("Erreur de connexion : " . $error->getMessage() );
}
$connexion = null; // Fermeture de la connexion
}

Mais ca fonctionne pas, il doit y avoir un truc pour identifier le type de BDD.

----------------------------------------------------------------------------
Il y a 10 types de personnes dans le monde, ceux qui comprennet le binaire et les autres.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 mars 2009 à 08:25
Hello,

quel est le contexte ? Pourquoi ignores-tu au départ le type de serveur DB auquel tu dois te connecter? C'est curieux comme besoin...
Sinon, ton code ne peut pas marcher en l'état, effectivement, étant donné que tu fais un die() dans le catch. Donc si la 1ère tentative de connexion échoue, ton script s'arrête et n'essaye pas les autres.
Pour répondre à "il doit y avoir un truc pour identifier le type de BDD", non, pas automatiquement. Et c'est normal...comment veux-tu que le serveur web ait le moindre moyen de savoir à quel type de serveur DB il doit se connecter ? C'est un autre système, souvent un autre serveur totalement externe au serveur DB. Potentiellement, tu peux te connecter à n'importe quel serveur DB.
A mon boulot par exemple, on développe des applicatifs qui ont besoin de se connecter à plusieurs serveurs DB différents.
Un serveur web n'est pas omniscient :-) En général, c'est plutôt le développeur qui est omniscient...(en tous cas, au niveau du contexte de son applicatif).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
azqsazqs Messages postés 83 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 28 novembre 2010
8 mars 2009 à 12:15
C'est pour une sorte de CMS (plus la structure que le code complet).

Celui que j'ai concu marche très bien pour Mysql, mais j'aimerais le généralisé et le passer aux standards actuels de façon a ne pas avoir a réécrire toute la structure à chaque changement de serveur.

----------------------------------------------------------------------------
Il y a 10 types de personnes dans le monde, ceux qui comprennent le binaire et les autres.
0
Rejoignez-nous