Fatal error: uncaught exception 'PDOException'

Bonjour, quand j'exécute mon fichier sur le web local, j'ai le message d'erreur suivant.

Savez-vous de quoi il peut s'agir?

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'defi.note' doesn't exist' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\my portable files\devoirPython.php:48 Stack trace: #0 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\my portable files\devoirPython.php(48): PDO->exec('INSERT INTO not...') #1 {main} thrown in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\my portable files\devoirPython.php on line 48

Merci !

3 réponses

  1. Modérateur
    Bonjour

    Le message est plutot clair. ..
    Il ne trouve pas la bdd ou la table sur laquelle tu fais ta requete.

    Tu peux nous montrer le code qui pose probleme ainsi que la connexion a la bdd et la structure de ta bdd ?
    1. Le code qui pose problème :
      <?php
      $reponse = $bd-> exec('INSERT INTO notes (IdNote, note, ue, IdEtudiant) VALUES(\'3\',\'17\',\'1008\',\'30001459\')');
      ?>



      1. Tu devrais revoir cette partie sur les requêtes, tu as plusieurs erreurs:

        1- IdNote ne doit pas être renseigné, en effet un id est unique, ton champs doit être en auto incrémente. Du coup a chaque nouvelle entrée dans la base de donnée, le champs IdNote ce remplie tout seul.

        2 - ce n'est pas exec que tu dois utiliser ici mais query ($reponse = $bd->query(ma requête), sans espace)

        3 - Je ne te conseille pas de mettre les valeurs en dur dans ta requête, mais de crée des variables avec leurs valeurs. De plus n'hésite pas a utiliser les " cela permet d'éviter les \ exemple :

        $reponse = $bd->query('INSERT INTO notes (IdNote, note, ue, IdEtudiant) VALUES("3","17","1008","30001459")');

        c'est quand même plus propre.

        PS : PDO::exec — Exécute une requête SQL et retourne le nombre de lignes affectées

        PS2 : n'oublie pas d'utiliser les balises "code" pour mettre le code en couleur.
      2. Sauf erreur de ma part tu as inversés les deux méthodes : il faut bien utiliser la méthode PDO::exec pour les requêtes ne retournant pas de jeu de résultat (INSERT, UPDATE et DELETE) et utiliser PDO::query pour les requêtes de type SELECT.
      3. @PitetJe n'utilise pas vraiment exec, sur php.net. Il explique que cela permet de compter le nombre d’occurrence.
      4. PDO::query retourne un jeu de résultat, c-a-d les lignes de résultats de la requête SELECT
        PDO::exec retourne le nombre de ligne affectées, c-a-d le nombre de lignes insérées, modifiées ou supprimées lors d'une requête INSERT, UPDATE ou DELETE
    2. Salut,

      Peux tu également nous montrer ton code de connexion PDO stp ? (en masquant bien sûr l'utilisateur et le mot de passe mysql)

      Bonne journée,