Probléme valeur NULL SQL

Eléphanteau du PHP | 49 Messages

27 oct. 2021, 11:15

Bonjour à tous j'ai un soucis en SQL je doit faire une conditon
donc le if renvoi un tableau php (encode_json) en req SQL avec UPDATE jusque là tout va bien !
Sachant que la valeur de la table(colonne Mysql) est NULL par défaut.
Mais dans le else parfois le tableau sera vide donc quand je laisse en état j'ai ça dans mysql [] juste des crochets et quand j'envoie via ma requête NULL parfois j'ai bien NULL mais parfois null ( string) et mon code fonctionne plus donc je sais plus quoi faire ma requête sql gére un update de tableau d'id si ça peut aider.
Donc parfois remplie parfois vide donc je voudrais savoir comment faire pour pouvoir renvoyer NULL quand le tableau est vide sachant que NULL dans la requéte ne fonctionne pas Merci pour vos réponses !
Plutôt être que paraître !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 oct. 2021, 12:39

Difficile de te répondre sans voir comment tu définis et comme tu testes la valeur de tes variables.

La chose à savoir c'est qu'il faut faire en PHP des conditions avec des opérateurs de comparaison strict pour pouvoir différencier un tableau vide, un texte vide ou une variable nulle.
Ça se fait avec trois égales === pour une stricte comparaison de valeur et de type,
ou à l'inverse !== pour une valeur et un type différent.

Tu peux aussi utiliser les fonctions PHP type is_null() ou son contraire isset()
https://php.net/is_null
https://php.net/isset
https://www.php.net/manual/fr/language. ... arison.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 49 Messages

30 oct. 2021, 00:50

Slt oui ça je connais
Mon code est simple justement je fais un isset sur le tableau savoir s'il est null ou non !
Mais mon probléme est que c'est une table avc des id (tableau php) envoyer en JSON via json-encode => requete => Mysql !

if(isset($list['id']))
{
echo "non null";
// ici j'envoi un tab en json => mysql table
}
else 
{
echo "null";
// Ici j'envoi une valeur NULL via ma requete mais quand j'envoi ça, dans ma table mysql j'ai 3 valeurs (NULL ou null(string) ou  [](crochet);
ajout("15", NULL); // C'est ici que le NULL pose probléme il m'envoi une des 3 valeurs de la ligne au dessus 
}
// Ici ma requete sql minifié j'ai deux paramétres à mettre à ma fonction ( je suis en MVC ) 
public function ajout($id_user,  $list)
{
UPDATE user SET list = :list  WHERE id_user = :id_user
}
Plutôt être que paraître !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

01 nov. 2021, 19:02

Bah faire un var_dump($list) dans ta fonction ajout() et tel que ton code est présenté il ne peux pas te renvoyer autre chose que NULL donc c'est que le bug est dans une partie de code que tu n'as pas montré
Quand tout le reste a échoué, lisez le mode d'emploi...