Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    r83
    r83 est déconnecté
    Membre du Club
    Inscrit en
    mars 2003
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 246
    Points : 48
    Points
    48

    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 :
    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 du Club
    Inscrit en
    mars 2003
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 246
    Points : 48
    Points
    48

    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
    Webmaster
    Inscrit en
    mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : mars 2011
    Messages : 40
    Points : 50
    Points
    50

    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 du Club
    Inscrit en
    mars 2003
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 246
    Points : 48
    Points
    48

    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 Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    1 634
    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 634
    Points : 2 000
    Points
    2 000

    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.
    Soyez moderne: mysqli_connect() or throw Exception(mysqli_connect_error());

    PHP: un problème ? décrivez le avec ceci.

    Utilisez le bouton résolu!

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •