1366 Incorrect integer value: 'null' for column
RésoluLaChaux78 Messages postés 607 Statut Membre -
Bonjour lorsque je veux faire un INSERT dans ma BDD via un formulaire j'ai cette erreur,
Erreur ! SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'null' for column 'idaut' at row 1
Malheureusement je ne peux pas faire mon INSERT en mettant une valeur à vide. J'ai essayé de mettre mon champs à NULL et une valeur par défaut à 0 dans phpMyAdmin mais en vain.
J'ai fait également cette condition mais toujours pas le résultat attendu.
$idaut = isset($_POST['idaut']) ? $_POST['idaut'] : 0; if (empty($idaut)) { REQUETE INSERT }
Je vous remercie pour votre aide.
- Incorrect integer value: 'null' for column
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
- Winrar for pc - Télécharger - Compression & Décompression
6 réponses
A quoi sert ton
if (empty($idaut))
Je pense que tu veux plutôt faire
if ($idaut==0)
Ensuite, il faut voir comment tu fais ta requête SQL.
Peut être as-tu fais une faute de frappe sur le nom de la variable au moment de la mettre dans la requête.
en fait ma condition c'était si $idaut est vide alors on INSERT voici la requète,
if (empty($idaut)) { $sql = "INSERT INTO cdc_oeuvres (oeuvre, idaut, idorch, conduct) VALUES (:oeuvre, :idaut, :idorch, :conduct)"; $datas = array('oeuvre' => $oeuvre, 'idaut' => $idaut, 'idorch' => $idorch, 'conduct' => $conduct); $result = executeQuery($sql,$datas); $typenr = "enregistré"; $reqaj = $sql; $success = "<span class='success'>La nouvelle oeuvre - ".trim(stripslashes("$oeuvre"))." - a été $typenr.</span>"; }
J'ai essayé aussi
if ($idaut==0)
mais toujours impossible de faire un INSERT si je laisse une valeur vide. Par contre si j'envoie tous les champs avec une valeur l'INSERT se fait correctement.
DROP TABLE IF EXISTS `cdc_oeuvres`; CREATE TABLE IF NOT EXISTS `cdc_oeuvres` ( `idoeu` int NOT NULL AUTO_INCREMENT COMMENT 'ID de l''oeuvre musicale', `oeuvre` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Nom de l''oeuvre musicale', `idaut` int DEFAULT '0' COMMENT 'ID de l''auteur de l''oeuvre musicale', `idorch` int NOT NULL COMMENT 'ID de l''orchestration', `conduct` tinyint(1) NOT NULL COMMENT 'A 1 si Conducteur', PRIMARY KEY (`idoeu`), KEY `idaut` (`idaut`), KEY `idorch` (`idorch`) ) ENGINE=MyISAM AUTO_INCREMENT=807 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Table de relation : oeuvres - auteurs - orchestrations';
c'est donc bien la valeur idaut que je souhaite laisser vide.
Bonjour Excuse moi je me suis mal expliquée. Par contre cette valeur peut rester vide et également être sélectionnée (non vide) cela dépends. Je vous remercie.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour alors d'après ce que tu me dit il faut mettre une condition sur chaque INSERT? .je ne comprends pas trop en fait.
Bonjour,
Si $idaut est facultatif et avec une valeur par défaut, as tu vraiment besoin de vérifier si la variable est vide avec empty ?
$idaut = isset($_POST['idaut']) ? intval($_POST['idaut']) : 0; $sql = "INSERT INTO cdc_oeuvres (oeuvre, idaut, idorch, conduct) VALUES (:oeuvre, :idaut, :idorch, :conduct)"; $datas = ['oeuvre' => $oeuvre, 'idaut' => $idaut, 'idorch' => $idorch, 'conduct' => $conduct]; $result = executeQuery($sql,$datas);
Si $_POST['idaut'] n'est pas défini, l'œuvre sera insérée avec un champ idaut égal à 0.