[RESOLU] Erreur PDOexception que je n'arrive pas à résoudre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Erreur PDOexception que je n'arrive pas à résoudre

Re: Erreur PDOexception que je n'arrive pas à résoudre

par Aiko Froux » 23 sept. 2019, 19:33

Ah oui merci en effet c'est assez bête comme erreur et bien merci beaucoup ça marche :)

Re: Erreur PDOexception que je n'arrive pas à résoudre

par or 1 » 23 sept. 2019, 19:28

si la table ne s’appelle pas table, cela ne fonctionnera pas. s'il y a un ' dans un des 3 champs, cela ne fonctionnera pas.

Re: Erreur PDOexception que je n'arrive pas à résoudre

par Aiko Froux » 23 sept. 2019, 19:19

Bonjour merci pour votre réponse ! Alors, j'ai essayé avec la syntaxe MySQL serte je n'ai pas d'erreur mais mes informations ne sont pas envoyé dans ma table :( comme dis je suis débutant donc je me suis peut être trompé voici ce que j'ai changer :

Code : Tout sélectionner

$insert = $db->prepare("INSERT INTO table SET title='$title', description='$description', price='$price'");

Re: Erreur PDOexception que je n'arrive pas à résoudre

par @rthur » 23 sept. 2019, 10:40

Bonjour,

Le message d'erreur est plutôt explicite :
Incorrect integer value: '' for column 'id'
Tu essayes de mettre une valeur vide à la colonne ID or c'est impossible, très probablement parce que lors de la création de ta table tu as indiqué que cette colonne ne peut pas avoir de valeur nulle.

Par ailleurs, je te recommande fortement de nommer tes colonnes dans tes INSERT car cela évitera les problèmes si tu devras faire évoluer ta table plus tard.
INSERT INTO table (colonne1, colonne2, colonne3) VALUES ('valeur1', 'valeur2', 'valeur3')
Tu peux aussi utiliser la syntaxe MySQL avec SET que je trouve encore + lisible :
INSERT INTO table SET colonne1='valeur1', colonne2='valeur2', colonne3='valeur3'
Si ton champ id est en AUTO_INCREMENT, alors il te suffit de ne pas l'indiquer dans ta requête et MySQL complètera automatiquement.

Erreur PDOexception que je n'arrive pas à résoudre

par Aiko Froux » 23 sept. 2019, 08:29

Bonjour je suis entrain d'apprendre à faire un site en php, mais je reçois deux erreurs plutôt embarrassante car je n'arrive pas à les résoudre :
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1 in C:\wamp64\www\Ai-Store\admin\admin.php on line 32
PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1 in C:\wamp64\www\Ai-Store\admin\admin.php on line 32

J'ai fais des recherches mais impossible de trouver une solution qui convenait à mon problème, merci d'avance pour votre aide et voici mon code et ma table :

Ma table Phpmyadmin
https://image.noelshack.com/fichiers/20 ... apture.png

Mon code :

Code : Tout sélectionner

<link rel="stylesheet" href="style/admin.css"> <link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet"> <body> <?php session_start(); try{ $db = new PDO('mysql:host=127.0.0.1;dbname=ai-store', 'root',''); $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions } catch(Exception $e){ die('Une erreur est survenue'); } if(isset($_SESSION['username'])) { if(isset($_GET['action'])) { if($_GET['action']=='add'){ if(isset($_POST['submit'])) { $title=$_POST['title']; $description=$_POST['description']; $price=$_POST['price']; if($title&&$description&&$price) { $insert = $db->prepare("INSERT INTO products VALUES('','$title','$description','$price')"); $insert->execute(); }else { echo'<b><p class="ec">Veuillez remplir tous les champs !</p></b>'; } } ?> <form action="" method="post"> <h3>Titre du produit :</h3><input type="text" name="title"/> <h3>Description :</h3><input type="text" name="description"/> <h3>Prix :</h3><input type="text" name="price" /> <input type="submit" name="submit"/> </form> <?php }else if($_GET['action']=='modify') { }else if($_GET['action']=='delete') { }else { die('Error'); } }else{ } }else{ header('Location: ../index.php'); } ?> <h1>Bienvenue, <?php echo $_SESSION['username']; ?> !</h1> <a href="?action=add">Ajouter - Produit</a> <a href="?action=modify">Modifier - Produit</a> <a href="?action=delete">Supprimer - Produit</a> </body>