1366 Incorrect integer value: 'null' for column
Résolu/FerméLaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 - 31 mars 2023 à 12:49
- Sqlstate[hy000]: general error: 1366 incorrect integer value
- Network error ✓ - Forum Réseaux sociaux
- Http error 413 zimbra - Forum autres boîtes mail
- Incorrect integer value: '' for column ✓ - Forum MySQL
- Eespt technical error ✓ - Forum TNT / Satellite / Réception
- Mysqli::real_connect(): (hy000/2002): aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée. - Forum PHP
6 réponses
30 mars 2023 à 21:57
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.
30 mars 2023 à 23:44
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.
30 mars 2023 à 23:53
bonjour,
Finalement, tu montres ta requête INSERT.
Reste à nous montrer la structure de ta table.
30 mars 2023 à 23:57
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.
31 mars 2023 à 08:34
Pour laisser une valeur "vide", il ne faut pas la mettre dans l'INSERT.
31 mars 2023 à 08:59
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.
31 mars 2023 à 09:13
Il faut donc prévoir deux INSERT, un avec et un sans ce champ. Et exécuter le bon.
INSERT INTO cdc_oeuvres (oeuvre, idorch, conduct) VALUES (:oeuvre, :idorch, :conduct)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question31 mars 2023 à 10:28
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.
31 mars 2023 à 12:49
Bonjour un grand merci cela est bien comme je le souhaitais.
Je vous remercie.