IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

connection string instanciation objet PDO


Sujet :

PHP & Base de données

  1. #1
    r83
    r83 est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Points : 86
    Points
    86
    Par défaut connection string instanciation objet PDO
    Bonjour,

    Voici 4 syntaxes de connexion, la syntaxe 3 plante. Ma question est de savoir pourquoi parfois on met dans le driver mysql:localhost, parfois mysql:host=localhost et si on travaille avec des constantes, seule la syntaxe mysql:SERVEUR fonctionne. Pourquoi aussi les deux syntaxes : dbname ou db name sont bonnes ?
    Quelle est la meilleure solution ?
    Merci pour ces éclaircissements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?php
     
    define('SERVEUR', 'localhost');
    define('BD', 'test');
    define('LOGIN', 'toto');
    define('PWD', 'toto');
    echo "Syntaxe 1 ";
    try {
        $connect_str = "mysql:localhost;db name=test";
        $dbmysql = new PDO($connect_str, LOGIN, PWD);
        $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "connecté à Mysql";
    } catch (PDOException $pdoEx) {
        echo "<p>" . $pdoEx . "</p>";
    }
    echo "<p>Syntaxe 2 ";
    try {
        $connect_str = "mysql:host=localhost;dbname=test";
        $dbmysql = new PDO($connect_str, LOGIN, PWD);
        $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "connecté à Mysql </p>";
    } catch (PDOException $pdoEx) {
        echo "<p>" . $pdoEx . "</p>";
    }
    echo "<p>Syntaxe 3 ";
    try {
        $connect_str = "mysql:host=SERVEUR;dbname=BD";
        $dbmysql = new PDO($connect_str, LOGIN, PWD);
        $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "connecté à Mysql</p>";
    } catch (PDOException $pdoEx) {
        echo "<p>" . $pdoEx . "</p>";
    }
    echo "<p>Syntaxe 4 ";
    try {
        $connect_str = "mysql:SERVEUR;dbname=BD";
        $dbmysql = new PDO($connect_str, LOGIN, PWD);
        $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "connecté à Mysql</p>";
    } catch (PDOException $pdoEx) {
        echo "<p>" . $pdoEx . "</p>";
    }
    ?>

  2. #2
    r83
    r83 est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Points : 86
    Points
    86
    Par défaut
    Je précise, me message suivant apparaît sur la syntaxe 3 :
    exception 'PDOException' with message 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Hôte inconnu.

  3. #3
    Membre du Club
    Homme Profil pro
    au
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : au
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 52
    Points
    52
    Par défaut
    Le problème c'est le nom du hôte de votre serveur, le hôte "SERVEUR" n'existe pas, le nom de hôte pour se connecter à la base de donnée est localhost.

  4. #4
    r83
    r83 est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Points : 86
    Points
    86
    Par défaut
    Merci pour la réponse.
    SERVEUR est une constante définie en haut du script.
    pourquoi, en dur ça marche si je ne mets
    mysql:host=localhost
    ou
    mysql:localhost
    et si je définis une constante SERVEUR dont la valeur est localhost,

    seule la syntaxe mysql:SERVEUR
    marche ?
    Merci pour les précisions

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    mais là dans le code, tu ne définis pas de constante ni tu en utilises ?!?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/11/2010, 11h49
  2. Instancier objet dont constructeur ni private ni public
    Par babarpapa dans le forum Langage
    Réponses: 14
    Dernier message: 21/06/2006, 13h17
  3. Probleme avec l'objet PDO en PHP
    Par krovomi dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 03/05/2006, 12h18
  4. instancier objet COM
    Par Someonelse dans le forum MFC
    Réponses: 2
    Dernier message: 14/11/2005, 10h31
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo