Renvoyer NULL avec UPDATE
Résolu
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
-
Contributeurbonjour, montre nous le code qui prepare et fait l'UPDATE.
tu dois obtenir:UPDATE retours SET action = NULL
-
Contributeurbonjour, 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 '' ... -
@FallentreeSi j'enlève les ' ', ma requète ne fonctionne pas lorsque $_POST["action"] n'est pas vide...
-
Contributeur@isa--si tu enlèves les '', ta requete fonctionne-t-elle quand $_POST["action"] est vide?
"ma requête ne fonctionne pas": message d'erreur, résultat inattendu?
peux-tu partager ce que contiennent $action et $req quand $_POST["action"] n'est pas vide?
-
-
Contributeurtu 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-
-
-
@PitetCa ne marche pas avec
$req = 'UPDATE `retours` SET `action` = ' . $action;
Ca marche à priori avec :$req = 'UPDATE `retours` SET `action` = $action;
Cela te semble - t il cohérent ? -
-
@jordane45Parce que je n'ai déjà pas compris grand chose à la fonction mysql_real_escape_string, alors la fonction mysqli_real_escape_string encore moins
Les explications du manuel php sont obscures pour moi
-
-
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,