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

Langage PHP Discussion :

connexion PDO : base inconnue alors qu'elle existe


Sujet :

Langage PHP

  1. #1
    Membre expert
    connexion PDO : base inconnue alors qu'elle existe
    Bonjour,
    suite à des problèmes, j'ai réinstallé plusieurs fois wampserver et pensant le problème résolu, je refais tourner le code PHP. Mais la connexion à la base ne marche plus. Voulant circonscrire le problème, j'ai écrit un fichier de test très simple : $dbh = new PDO('mysql:host=localhost;dbname=tickets', "root", "");
    PDOException: SQLSTATE[HY000] [1049] Base 'tickets' inconnue in C:\wamp644\www\ticket2\index2test.php on line 5
    alors que la bdd tickets existe...Peut-on m'aider ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  2. #2
    Rédacteur/Modérateur

    Salut

    Je suis étonné de la syntaxe que tu utilises au niveau du chemin mysql:host=localhost.

    ton code:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $dbh = new PDO('mysql:host=localhost;dbname=tickets', "root", "");

    le mien:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $pdo = new PDO('mysql:localhost;port=3306;dbname=bdtest', 'root', '', [
                        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
                        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                        PDO::ATTR_EMULATE_PREPARES   => false
                    ]);
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  3. #3
    Membre expert
    Merci de ton aide ; j'ai essayé ton code $dbh = new PDO('mysql:localhost;port=3306;dbname=tickets', 'root', ''); (sans les options PDO), mais j'ai le même message d'erreur...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  4. #4
    Modérateur

    salut,

    est ce que le service MySQL tourne en tâche de fond ?

  5. #5
    Membre expert
    Comment peut-on vérifier ça ?

    Et vérification faite, ma syntaxe de connexion qui surprenait progElecT est correcte...vu que c'est la tienne !
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  6. #6
    Modérateur

    Win+R
    services.msc puis Entrée
    et tu recherches MySQL

  7. #7
    Membre expert
    Merci du truc. Non, il n'y est pas.

    En fait, la connexion aux tables de base, amenées à l'installation de phpMyAdmin fonctionne, mais à aucune table que je crée moi-même.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  8. #8
    Membre expert
    Salut,
    je comprend qu'il aurait fallu que MySQL tourne en tâche de fond. Est-ce que je peux faire quelque chose pour que ce soit le cas ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  9. #9
    Membre actif
    Bonjour, oui il faut le démarrer dans WampServer =)

  10. #10
    Membre expert
    Oui, mais comme dans l'onglet MySQL, y a pas de start ou assimilé, j'ai fait "redémarrer les services" et il est toujours pas là (d'ailleurs, c'est la première chose que j'avais faite après avoir constaté le problème).
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  11. #11
    Membre actif
    En effet, j'avais l'interface de XAMPP en tête (que j'utilise d'ailleurs car plus simple sur Windows pour cette raison là).

    Si le service ne démarre pas au démarrage de Wampserver, il est probable que le port par défaut (3306) soit déjà utilisé par un autre processus. Peut être changer le port d'écoute dans le fichier de configuration de mysql ?

    Vous dites que PHPMyAdmin fonctionne ? Quel port est noté sur la page d'accueil ? C'est ce port là que vous devez préciser dans le DSN de PDO.

  12. #12
    Membre expert
    Il n'y a aucun port indiqué sur la page d'accueil. J'ai d'abord essayé MySQL/Utiliser un autre port que 3306 ; j'ai mis 3301 et l'ai aussi mis dans le DSN :
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $dbHost = "localhost";
    $dbUser = "root";
    $dbPassword = "";
    $dbName = "ticket2";
    $dsn = "mysql:host=" . $dbHost . ";dbname=" . $dbName;port=3301;
    $pdo = new PDO($dsn, $dbUser, $dbPassword,[PDO::ATTR_ERRMODE  => PDO::ERRMODE_EXCEPTION]);
    Mais même message d'erreur.
    Mon but étant uniquement d'avoir un serveur PHP en local, j'ai installé XAMPP. (XAMPP Control Panel V3.2.4). Il m'a créé un répertoire C:\XAMPP. J'ai compris que le code devait être mis dans le répertoire C:\XAMPP\htdocs et que si dans ce répertoire, je mets fichier.php, l'URL de ce fichier sera simplement http://localhost/fichier.php. OK. Pour lancer phpMyAdmin, Control Panel/MySQL/Admin. OK aussi. Il me détecte des erreurs PHP mais je crois que je tiens le bon bout. Dès que ça sera opérationnel, je mettrai en
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  13. #13
    Membre expert
    Ce soir, c'est bon. Donc XAMPP, adopté....
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  14. #14
    Membre expert
    Ca marche bien, néanmoins, vérification faite : MySQL ne tourne pas en tâche de fond. Pourquoi fallait-il que ce soit le cas pour Wampserver ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  15. #15
    Membre actif
    Pour moi non plus, il n'apparaît pas dans les services, mais dans la liste des processus ("Détails" du gestionnaire des tâches), il y a un mysqld.exe.

  16. #16
    Membre expert
    En effet. Il fallait être très observateur...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell