Renvoyer NULL avec UPDATE
Résolu
isa--
Messages postés
83
Statut
Membre
-
isa-- Messages postés 83 Statut Membre -
isa-- Messages postés 83 Statut Membre -
Bonjour à tous,
J'ai dans ma base un champ "action" dont la valeur par défaut est NULL
Pas de soucis pour les INSERT
Par contre, si je fais un UPDATE, je n'arrive pas à renvoyer la valeur NULL pour ce champ.
Le mieux que j'aie pu obtenir est un UPDATE `retours` SET `action` = 'NULL' ce qui fait entrer dans ma base la chaine de caratères "NULL" est non pas NULL.
Voici mon code pour la variable $action :
Merci d'avance pour votre aide, je crois que je patouille avec la fonction mysql_real_escape_string...
J'ai dans ma base un champ "action" dont la valeur par défaut est NULL
Pas de soucis pour les INSERT
Par contre, si je fais un UPDATE, je n'arrive pas à renvoyer la valeur NULL pour ce champ.
Le mieux que j'aie pu obtenir est un UPDATE `retours` SET `action` = 'NULL' ce qui fait entrer dans ma base la chaine de caratères "NULL" est non pas NULL.
Voici mon code pour la variable $action :
$action=$_POST["action"];
$action = $action == '' ? 'NULL':"'".mysql_real_escape_string($action)."'";
Merci d'avance pour votre aide, je crois que je patouille avec la fonction mysql_real_escape_string...
7 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, montre nous le code qui prepare et fait l'UPDATE.
tu dois obtenir:UPDATE retours SET action = NULL
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, montre-nous le code qui prépare et fait l'UPDATE. -
Merci de ta réponse
Le code pour préparer est dans mon premier message.
Voici celui de la requête :
$req="UPDATE `retours` SET `lr` = '$lr', `cial` = '$cial', `date` = '$date1', `client` = '$client', `dpt` = '$dpt', "
."`ref` = '$ref',`nolot` = '$nolot',`qte` = '$qte',`longu` = '$longu',`larg` = '$larg',`motif` = '$motif', "
." `action` = '$action',`matiere` = '$matiere',`msno` = '$msno',`traite` = '$traite',`nofacture` = '$nofacture',`erreur` = '$erreur',`nomerreur` = '$nomerreur', "
."`obs` = '$obs',`reprise` = '$reprise',`cloture` = '$cloture',`coutmatiere` = '$coutmatiere',`coutport` = '$coutport', "
."`montantavoir` = '$montantavoir',`noavoir` = '$noavoir',`nodossier` = '$nodossier', `dateavoir` = '$dateavoir',`montantprejudice` = '$montantprejudice',"
." `montantmatiere` = '$montantmatiere',`montantfourn` = '$montantfourn',`saisie` = '$saisie'"
." WHERE `id` = '$get'"; -
La déclaration de la table accepte le Null pour ce champ ???
-
-
essaie peut être avec la fonction isnull
peut être trop pressé 'NULL' est différent de NULL
enlève les '' ...
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
tu peux tester avec cet exemple pour comprendre:$action1='NULL'; $action2="'"."action"."'"; echo "<br>"; echo $action1; echo "<br>"; echo $action2; echo "<br>"; echo "'$action1'"; echo "<br>"; echo "'$action2'"; echo "<br>";
-
Je reprends un peu ma demande pour que ce soit plus clair :
Requete : UPDATE `retours` SET `action` = '$action'Je récupère $action par $action=$_POST["action"]
puis$action = $action == '' ? 'NULL':"'".mysql_real_escape_string($action)."'";
Si $action est vide, je veux que le champ action de ma bdd soit NULL et non pas vide.
Ce qui n'est pas le cas actuellement car ce que je génère est :UPDATE retours SET action = 'NULL'
à la place deUPDATE retours SET action = NULL
La question est donc comment faire dégager les '' de ma requête si $action est vide ?
Je pense que le problème vient de ma fonction mysql_real_escape_string($action) que je ne maitrise pas.
C'est là que j'ai besoin d'aide
Merci d'avance -
Salut,
Un exemple simple auquel devrait ressembler ton code :<?php if (isset($_POST['action'])) { $action = empty($_POST['action']) ? 'NULL' : "'" . $_POST['action'] . "'"; //$action = empty($_POST['action']) ? 'NULL' : "'" . mysqli_real_escape_string($_POST['action']) . "'"; $req = 'UPDATE `retours` SET `action` = ' . $action; var_dump($req); } ?> <form method="post" action=""> <input type="text" name="action"> <input type="submit"> </form>
Bonne journée,