Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/09/2012, 09h09   #1
r83
Membre du Club
 
Inscription : mars 2003
Messages : 240
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 240
Points : 47
Points : 47
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>";
}
?>
r83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2012, 09h11   #2
r83
Membre du Club
 
Inscription : mars 2003
Messages : 240
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 240
Points : 47
Points : 47
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.
r83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2012, 12h40   #3
Devildz
Membre du Club
 
Homme
Webmaster
Inscription : 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
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.
Devildz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2012, 16h17   #4
r83
Membre du Club
 
Inscription : mars 2003
Messages : 240
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 240
Points : 47
Points : 47
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
r83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2012, 10h52   #5
gene69
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 1 626
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 626
Points : 1 992
Points : 1 992
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!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h22.


 
 
 
 
Partenaires

Hébergement Web