Page 1 sur 1

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

Posté : 23 sept. 2019, 08:29
par Aiko Froux
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>

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

Posté : 23 sept. 2019, 10:40
par @rthur
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.

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

Posté : 23 sept. 2019, 19:19
par Aiko Froux
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

Posté : 23 sept. 2019, 19:28
par or 1
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

Posté : 23 sept. 2019, 19:33
par Aiko Froux
Ah oui merci en effet c'est assez bête comme erreur et bien merci beaucoup ça marche :)