utiliser PDO pour se connecter à la base Mysql ne fonctionne pas
Je suis en train de l'aide de l'AOP module dans mon code PHP pour se connecter à la base de données. J'ai lu et la recherche sur des sujets similaires, mais je ne peux pas comprendre ce que j'ai fait de mal. Merci de m'aider à résoudre le problème.
-
Version d'Apache: Apache/2.2.21 (Win32) PHP/5.3.10
-
dans le php.fichier ini, je l'onu-commenté la ligne: extension=php_mysql.dll
2a. la fonction phpinfo a montré " Chargé Fichier de Configuration de l'emplacement est C:\php\php.ini
2b. Driver PDO information a montré par le phpinfo de la fonction:
en vertu de l'AOP section: les drivers PDO-->Mysql (activé)
en vertu de Driver PDO pour MySQL section: version de l'API client-->mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $ (activé)
Code que j'ai utilisé pour la connexion à la base de données
$db_user = "uid";
$db_pass = "pd";
$db_connect = new PDO('mysql:host=locahost; dbname=practice; charset=UTF-8', $db_user, $db_pass);
if($db_connect){
print "connected to the db " . "<br />";
} else{
print "error connects to the db. " . mysql_error();
}
Le message d'erreur que j'ai reçu:
- Avertissement: PDO::__construct() [pdo.--construction]: php_network_getaddresses: getaddrinfo failed: hôte inconnu. dans C:\server\htdocs\html-exer\handle_reg3.php sur la ligne 14
- Avertissement: PDO::__construct() [pdo.--construction]: [2002] php_network_getaddresses: getaddrinfo failed: hôte inconnu. (essayez de vous connecter via tcp://locahost:3306) dans C:\server\htdocs\html-exer\handle_reg3.php sur la ligne 14
- Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: hôte inconnu." dans C:\server\htdocs\html-exer\handle_reg3.php:14 Stack trace: #0 C:\server\htdocs\html-exer\handle_reg3.php(14): PDO->__construct('mysql:host=loca...', 'root', 'mot de passe') #1 {principal} jeté dans C:\server\htdocs\html-exer\handle_reg3.php sur la ligne 14
Edit: Ajout de la réponse en demandant davantage d'information qui sera sans aucun doute être supprimé peu de temps:
Bonjour Votre Bon Sens:
Merci pour le fragment de code. Il m'a aidé à résoudre le problème. Il semble que le jeu de caractères peut être la cause. Voici mon code pour se connecter à la db
$dsn= 'mysql:host=localhost; dbname=practice; charset=utf8';
$db_user = "root";
$db_pass = "mypd";
$db_connect = new PDO($dsn, $db_user, $db_pass);
if($db_connect){
print "connected to the db " . "<br />";
}
Vous devez vous connecter pour publier un commentaire.
Il semble que votre serveur mal configuré
utilisation
127.0.0.1
au lieu delocalhost
dans la DSN.Vous avez besoin de lire des messages d'erreur.
Il dit que votre AOP ont des problèmes de connexion à localhost. Donc, vous avez besoin de changer une adresse pour les AOP de la chaîne de connexion.
Aussi vous avez été en utilisant des caractères incorrects de nom, j'ai corrigé il
Aussi,
mysql_error()
est inutile avec PDO. Pas besoin d'appeler cette fonction, vous avez une erreur renvoyé déjàJuste au cas où quelqu'un d'autre terres ici à partir de google. J'ai eu exactement le même problème et le redémarrage d'apache, il fixe.
Si toutes les réponses ci-dessus ne résolvent pas votre problème, essayez de spécifier le numéro de port pour votre DSN :
ici, j'ai utilisé 3306 comme c'est mon numéro de port par défaut de Mysql.
La première chose à faire est de vérifier vos paramètres de connexion dans votre fichier de config
Cela peut sembler évident, mais depuis que j'ai eu juste configuré les paramètres.yml de mon projet Symfony avec les "valeurs de droite", je ne pense pas tout de suite, et il pensait que le problème était ailleurs.
Mon dbname était tout à fait inacceptable !