IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

[PDO] Connexions à une base de données [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut [PDO] Connexions à une base de données
    Bonjour,

    Je débute complètement pour la gestion de base de données.

    Je suis arrivé ici dans le tuto :
    http://g-rossolini.developpez.com/tu...nnees#LVII-A-2

    J'essaie de comprendre le code en le recopiant
    mais cela me donne une erreur :

    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'utilisateur'@'localhost' (using password: YES)' in C:\wamp\www\PHP\___tempo.php:2 Stack trace: #0 C:\wamp\www\PHP\___tempo.php(2): PDO->__construct('mysql:host=loca...', 'utilisateur', 'motdepasse') #1 {main} thrown in C:\wamp\www\PHP\___tempo.php on line 2


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    $db = new PDO('mysql:host=localhost;dbname=developpez', 'utilisateur', 'motdepasse');
     
    $select_users = $db->prepare('SELECT id, name FROM user');
    $select_user = $db->prepare('SELECT id, name FROM user WHERE user_id = ?');
    $insert_user = $db->prepare('INSERT INTO user (name, password) VALUES (?, ?)');
     
    //récupère tous les utilisateurs (aucun puisque la table est vide)
    $select_users->execute();
    $users = $select_users->fetchAll();
     
    $insert_user->execute(array('BrYs', '4321'));
    $insert_user->execute(array('mathieu', '4321'));
    $insert_user->execute(array('Yogui', '4321'));
     
    $select_users->execute(); //récupère tous les utilisateurs (les 3)
    $users = $select_users->fetchAll();
     
    $select_user->execute(array(1)); //récupère l'utilisateur numéro 1
    $user_1 = $select_user->fetchAll();
     
    $select_user->execute(array(2)); //récupère l'utilisateur numéro 2
    $user_2 = $select_user->fetchAll();
     
    $select_user->execute(array(3)); //récupère l'utilisateur numéro 3
    $user_3 = $select_user->fetchAll();
    ?>
    A la ligne 2, je crois comprendre que l'on crée un nouvel
    objet PDO en précisant que :

    "mysql" est le type de la BDD qui nous servira pour lancer
    nos requêtes. Mais cela pourrait être par exemple :
    PostgreSQL, Oracle...

    "host=localhost" est le réseau local ( je suppose que c'est ici
    que l'on mentionne l'adresse IP du serveur )

    "dbname=developpez" est le nom de la base de données.

    Suffit-il d'instancier la classe PDO pour créer une BDD ?

    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Suffit-il d'instancier la classe PDO pour créer une BDD ?
    PDO est une classe permettant d'utiliser une base de donnée.
    L'instanciation de la classe réalise uniquement une connexion au serveur.

    Techniquement on pourrait ensuite créer une base en écrivant un script PHP qui exécuterait des requêtes de type CREATE.
    Cependant pour mysql, il existe des outils comme Phpmyadmin qui facilite cette étape.

    Concernant l'erreur que tu rencontres, elle vient de nom d'utilisateur et du mot de passe qui ne sont pas corrects.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    ... nom d'utilisateur et du mot de passe qui ne sont pas corrects.
    Mais, je ne sais pas ce qu'il faut faire !

    D'après ce que tu me dis, j'ai peur que ma BDD
    n'existe pas !

    Comme, j'ai dis :
    Je débute complètement pour la gestion de base de données.

    Je suis arrivé ici dans le tuto :
    http://g-rossolini.developpez.com/tu...nnees#LVII-A-2
    Et ce que tu lis dans mon code, ce sont les toutes premières lignes en rapport aux BDD.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà tu as un serveur mysql puisqu'il répond

    Comment as-tu fais ton installation de mysql ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Je ne sais pas comment j'ai installé mysql.

    Tu te rappelles de mon post :
    http://www.developpez.net/forums/d78...ent-php-5-3-a/
    Je retourne sur ce fil pour y ajouter une chose.

    Sinon il y a aussi celui-ci :
    http://www.developpez.net/forums/d79...ement-pilotes/

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est peut être le serveur mysql installé par Wamp ; essai le login "root" sans mot de passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = new PDO('mysql:host=localhost;dbname=developpez', 'root', '');
    Par contre tu dois créer ta base, connecte toi sur
    http://localhost/phpmyadmin

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    J'essaie de créer ma base.

    Bon, pour le nom d'accord, j'ai mis 'developpez'.
    Mais pour le reste... table ? ... champ ? etc
    je risque de bricoler.

    Je ne sais pas trop que faire ...

    Apprendre à créer simplement une BDD sur PHPmyAdmin ?
    Quels sont les meilleurs tuto. pour débutant en français ?

    Est-on obligé de passer par mysqlAdmin?
    Est-ce le seul moyen de créer un BDD mysql ?

    Merci déjà pour les 1e réponses.

    A moins que tu me dises simplement les choses ...
    si ce n'est pas trop long pour toi.

    Le principal est que je puisse (dans un premier temps)
    stocker mes données et les récupérer de manière 'basique'.
    Histoire de m'habituer un peu.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Si je me souviens bien, avec wamp ou easyphp est inclus phpMyAdmin

    Essaye cette url : http://127.0.0.1/mysql/ ou http://127.0.0.1/phpmyadmin/

    PhpMyAdmin est un script très puissant qui te permet d'administrer très facilement ses bases de données.
    Encore un truc que tu vas avoir à apprendre. La gestion de bases de données allant très souvent de paire avec la programmation PHP

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Salut PetitBidon,

    J'aime ton humour
    Encore un truc que tu vas avoir à apprendre.
    Ahhh ! Les temps sont durs !

    Ok, je me lance

    En premier, je vais chercher :
    Quels sont les meilleurs tuto. PHPmyAdmin
    pour débutant en français ?
    Enfin, si vous connaissez un bon lien ...

    Merci pour vos réponses.

    A bientôt.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Je viens de lancer ce post pour MysqlAdmin :
    http://www.developpez.net/forums/d79...n/#post4554229

  11. #11
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    En tout cas par rapport au tuto, je pense que tu peux virer le champ user_id de la table user. C'est une erreur.

    Le champ user_id est par contre utilisé dans la table message un peu plus bas dans le tuto

    Dans les 2 tables, met les champs id en tant que type int, auto_increment, not null et primary key

    Edit: et je pense que tu devrais sérieusement regarder des tutos sur les bases de données et mysql en particulier avant de continuer dans le tuto php

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Salut Meta,

    tu devrais sérieusement regarder des tutos sur les bases de données et mysql en particulier avant de continuer dans le tuto php
    Oui, j'essaie de trouver.

    Je n'ai pas non plus une notion bien précise
    (même très floue ) de PDO.

    Où vais-je trouver la signification de ce
    "$db->prepare" ?

    Merci pour les réponses.

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec PDO, on "prepare" les requêtes.
    C'est à dire qu'on écrit d'abord la structure de la requête sans les valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select_user = $db->prepare('SELECT id, name FROM user WHERE user_id = ?');
    (ici "?" est notre valeur manquante.)

    Ensuite on "execute" la requête, et la on fournit la valeur manquante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select_user->execute(array(1));
    (ici "1" va prendre la place de notre "?")

    Cela permet de
    - executer plusieurs fois la même requête en fournissant juste les nouvelles valeurs.
    - empêcher les injections

  14. #14
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Citation Envoyé par éric1 Voir le message
    Je n'ai pas non plus une notion bien précise
    (même très floue ) de PDO.

    Où vais-je trouver la signification de ce
    "$db->prepare" ?
    Dans la doc! En prog plus qu'ailleurs, la doc est ton amie.
    PDO::prepare http://fr.php.net/manual/fr/pdo.prepare.php
    PDO http://fr.php.net/manual/fr/book.pdo.php

    Personne ne connaît tout par coeur (à part des trucs qu'on peut faire régulièrement). Il faut que tu acquières le reflex d'aller voir dans la doc (de php, de phpmyadmin, de mysql etc etc)

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Bonjour à tous,

    Merci pour votre aide.

    Ok >>> Je mets tout cela au point.

    Néanmoins, je reste coincé ici (mes 2 derniers messages) :
    http://www.developpez.net/forums/d79...n/#post4554676

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Connexion à une base de données distante avec PDO chez OVH
    Par Sevi Sandrine dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/03/2015, 09h42
  2. Réponses: 1
    Dernier message: 25/09/2005, 16h18
  3. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo