Page 1 sur 1

PDO + WAMP + win7 problème de connexion à la base de données

Posté : 19 nov. 2010, 08:15
par cyberkoa
Bonjour à toutes et à tous.

Je suis plutôt débutant en PHP et mon problème se trouve ici :

J'ai une classe "test" dans laquelle le constructeur sert de connexion à ma base MySql via PDO (c'est juste pour le test).
voici l'extrait du code concerné :
private $dbhost;
private $dbname;
private $dbuser;
private $dbpass;
private $dsn = 'mysql:host=$dbhost;dbname=$dbname';

public function __construct()
{
$this->dbhost = 'localhost';
$this->dbname = 'agence24db';
$this->dbuser = 'root';
$this->dbpass = '';

try {
$dbh = new PDO ($this->dsn,$this->dbuser,$this->dbpass);
}
catch (PDOException $e) {
die ("Erreur ! : ".$e->getMessage ());
}
}
Quand ce code est exécuté, Firefox me retourne systématiquement l'erreur suivante :

Code : Tout sélectionner

Warning: PDO::__construct() [pdo.--construct]: php_network_getaddresses: getaddrinfo failed: H�te inconnu. in C:\wamp\www\createlist_copy.class.php on line 27 Warning: PDO::__construct() [pdo.--construct]: [2002] php_network_getaddresses: getaddrinfo failed: H�te inconnu. (trying to connect via tcp://$dbhost:3306) in C:\wamp\www\createlist_copy.class.php on line 27 Erreur ! : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: H�te inconnu.
La ligne 27 est celle-ci :
$dbh = new PDO ($this->dsn,$this->dbuser,$this->dbpass);
Voila, je suis bloqué là-dessus et donc impossible de tester la validité du reste de ma classe...

Est-ce que quelqu'un est déjà tombé sur ce même message d'erreur ??
J'ai été voir un post sur le forum de wamp mais il n'a pas été résolu.

Toute aide sera la bienvenue, merci d'avance

Re: PDO + WAMP + win7 problème de connexion à la base de données

Posté : 19 nov. 2010, 09:40
par Mazarini
Bonjour,

J'ai un doute sur : private $dsn = 'mysql:host=$dbhost;dbname=$dbname';

Je ne connais pas PDO, mais les ' font que les variables ne sont pas interprétées.
Tu devrais essayer $this->dsn = "mysql:host=$this->dbhost;dbname=$this->dbname" dans __construct
ou $this->dsn = 'mysql:host='.$this->dbhost.';dbname='.$this->dbname

Au minimum, affiche le contenu de dsn.

Re: PDO + WAMP + win7 problème de connexion à la base de données

Posté : 19 nov. 2010, 09:41
par moogli
salut,

c'est normal tu initialise la propriété dns avec 'mysql:host=$dbhost;dbname=$dbname';

ceci est la chaine que tu envoi directement à PDO et qu'il va utiliser pour se connecter à Mysql.
le résultat est explicite
(trying to connect via tcp://$dbhost:3306) in C:\wamp\www\createlist_copy.class.php on line 27
Erreur ! : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: H�te inconnu.
PDO chercher à se connecter à un serveur mysql qui se nomme $dbhost sur le port 3306.
Attention c'est bien la chaine de caractère $dbhost qu'il cherche et non le contenue de cette variable.
tu ne peut pas initialiser la propriété $dns ainsi.

tu peut facilement le construire dans le constructeur comme pour le reste
<?php
private $dsn;

public function __construct()
{
$this->dbhost = 'localhost';
$this->dbname = 'agence24db';
$this->dbuser = 'root';
$this->dbpass = '';
$this->dns = 'mysql:host='.$this->dbhost.';dbname='.$this->dbname;
?>
Pour finir regarde la différence entre des simple quote (') et les doubles quote (") pour les chaines de caractère (interprétation ou non des variables dans une chaine) et l'utilisation des méthodes et propriétés d'une classe ($dhost n'existe pas).

@+

Re: PDO + WAMP + win7 problème de connexion à la base de don

Posté : 03 févr. 2013, 15:32
par grophies
Salut,

je ne suis pas sûr, mais si j'ai bien compris le dsn est seulement l'adresse de la machine où se trouve la base et pas le nom de la base. Donc dans ton cas, le dsn est "mysql:host=$dbhost" et pas "mysql:host=$dbhost;dbname=$dbname".

ensuite, pour l'erreur d'encodage dans "Erreur ! : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: H�te inconnu." tu peux utiliser la fonction utf8_encode comme ceci :
<?php

	try
	{
		$bdd = new PDO('mysql:host=locdalhost;dbname=test', 'root', '');
	}
	catch (PDOException $e)
	{
		die(utf8_encode('Erreur : ' . $e->getMessage()));
	}

?>

Re: PDO + WAMP + win7 problème de connexion à la base de don

Posté : 03 févr. 2013, 15:38
par Perine
Félications, tu viens de déterrer un sujet qui a plus de deux ans.

Re: PDO + WAMP + win7 problème de connexion à la base de don

Posté : 03 févr. 2013, 16:12
par moogli
et d'indiquer une anerie ;)
Donc dans ton cas, le dsn est "mysql:host=$dbhost" et pas "mysql:host=$dbhost;dbname=$dbname".
si si il faut indiquer le nom de la base, le nom du serveur ne suffit pas (on va pas non plus envoyer de use lenomdelabase à tous va ;) ).


pour info http://fr2.php.net/manual/fr/ref.pdo-my ... ection.php


@+