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 à la base de donnée msql avec PDO


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Connexion à la base de donnée msql avec PDO
    Bonjour,

    J'essaie de me connecter à la base via la fonction PDO mais je ne parviens pas.

    J'ai survoler la plus part des cours, je commence à croire que chez moi que ça coince (config)

    J'essaie d'y accéder en utilisant la notation objet ($r->message) en vain !

    Je vous remercie !

    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
    <?php
     
        try {
            $handler = new PDO('mysql:host=localhost; dbname=panier', 'root', '');
     
        } catch (Exception $e) {
            echo $e->getMessage();
            die();
        }
     
        $query = $handler->query('SELECT * FROM produits');
        // $r = $query->fetch(PDO::FETCH_OBJ);
        // echo '<pre>', print_r($r), '</pre>';
     
     
        while ($r = $query->fetch(PDO::FETCH_OBJ)) {
            echo $r->message, '<br>';
        } 
    ?>

    Les erreurs affichées :
    Notice: Undefined property: stdClass::$message in C:\laragon\www\panier\connexion.php on line 18
    Notice: Undefined property: stdClass::$message in C:\laragon\www\panier\connexion.php on line 18

  2. #2
    Modératrice

    Conseils de base génériques

    Active les exceptions PDO. Par défaut PDO est silencieux et ne te dira pas si ta requête plante :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pdo = new PDO('mysql:host=localhost; dbname=panier', 'root', '', [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES   => false
                ]);


    Évite les select * et précise les colonnes que tu veux remonter et uniquement celles que tu veux remonter. Si tu as besoin de 2 assiettes, tu n'amènes pas toute la pile sur la table, surtout si tu as aussi des assiettes à soupe dans la pile. Et même si pour l'instant, tu ne possèdes que 2 assiettes, ça ne veut pas dire que tu ne vas pas en acheter dans le futur.

    Tu peux aussi indiquer des alias. Par exemple, si tu as une colonne en base qui s'appelle USR_NAME, un select USR_NAME as nom te permettra de manipuler $user->nom. Si tu travailles avec des normes de nommage strictes mais incompréhensibles au niveau de la base, ça peut être utile.
    Accessoirement, par défaut, fetchObject nomme les propriétés en respectant la casse de la requête. Ce qui veut dire que si ta requête est SELECT NOM FROM USER tu vas récupérer $obj->USER.

    Dans ton cas particulier, on voit que tu as essayé un print_r($r). Qu'est-ce que tu obtiens comme résultat ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

###raw>template_hook.ano_emploi###