Fatal error: uncaught exception 'PDOException'

siananox Messages postés 4 Statut Membre -  
Pitet Messages postés 2845 Statut Membre -
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

jordane45 Messages postés 40051 Date d'inscription   Statut Modérateur Dernière intervention   4 761
 
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 ?
0
siananox Messages postés 4 Statut Membre
 
Le code qui pose problème :
<?php
$reponse = $bd-> exec('INSERT INTO notes (IdNote, note, ue, IdEtudiant) VALUES(\'3\',\'17\',\'1008\',\'30001459\')');
?>




0
lolerki Messages postés 675 Statut Membre 102
 
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.
0
Pitet Messages postés 2845 Statut Membre 527
 
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.
0
lolerki Messages postés 675 Statut Membre 102 > Pitet Messages postés 2845 Statut Membre
 
Je n'utilise pas vraiment exec, sur php.net. Il explique que cela permet de compter le nombre d’occurrence.
0
Pitet Messages postés 2845 Statut Membre 527
 
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
0
Pitet Messages postés 2845 Statut Membre 527
 
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,
0