1366 Incorrect integer value: 'null' for column
RésoluLaChaux78 Messages postés 585 Date d'inscription Statut Membre Dernière intervention -
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.
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 question -
Bonjour 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.
-
-
Bonjour un grand merci cela est bien comme je le souhaitais.
Je vous remercie.