Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
648 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP rentre 0 au lieu de NULL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP rentre 0 au lieu de NULL

n°2421027
dureiken
Posté le 01-07-2022 à 15:17:56  profilanswer
 

Bonjour

 

j'ai un script PHP simple pour acquérir des valeurs

 
Code :
  1. <?php
  2. include 'connect.php';
  3. if(isset($_GET['pH']))
  4. {
  5.         $chlore=$_GET['pH'];
  6. }
  7. if(isset($_GET['chlore']))
  8. {
  9.         $chlore=$_GET['chlore'];
  10. }
  11. if(isset($_GET['flow']))
  12. {
  13.         $flow=$_GET['flow'];
  14. }
  15. $sql  = 'INSERT INTO `ocr2022-test` (`id`, `date`, `pH` , `chlore`, `flow`) VALUES (NULL, UTC_TIMESTAMP,"'.$pH.'" , "'.$chlore.'", "'.$flow.'" )';
  16. if ($conn->query($sql) === TRUE) {
  17.     echo "Nouvelle entrée OK";
  18. } else {
  19.     echo "Erreur : " . $sql . "<br>" . $conn->error;
  20. $conn->close();
 

seulement meme si je n'entre aucune valeur sur ma page PHP, il met pH, chlore et flow a 0, alors qu'ils sont réglés à NULL dans ma page.

 

Si quelqu'un a une idée pour régler ça ? merci :)


Message édité par dureiken le 01-07-2022 à 15:18:23
mood
Publicité
Posté le 01-07-2022 à 15:17:56  profilanswer
 

n°2421030
pluj
Posté le 01-07-2022 à 16:02:07  profilanswer
 

Lu,
 
c'est normal : la cast (niveau PHP) de NULL en string (induit par la concaténation) donne la chaîne vide puis vient celle de MySQL qui, avec une colonne de type *INT, va à son tour caster cette chaîne vide provenant de PHP en 0 (ou donner une erreur avec un sql_mode moins laxiste).
 
Tu devrais commencer par préparer ta requête, t'es bon pour des injections SQL là et ça devrait corriger ce problème de "type" (d'ailleurs les entiers ne se quotent pas en SQL, chose qui n'aurait pas non plus permis d'insérer NULL).
 
Visiblement tu utilises mysqli, tu pourrais te passer de toute gestion d'erreur de requêtes avec un mysqli_report qui demanderait à lever une exception (c'est même le comportement par défaut de mysqli depuis PHP 8.1.0 en principe).

Message cité 1 fois
Message édité par pluj le 01-07-2022 à 17:34:18
n°2421032
dureiken
Posté le 01-07-2022 à 16:31:35  profilanswer
 

pluj a écrit :

Lu,
 
 
 
Tu devrais commencer par préparer ta requête, t'es bon pour des injections SQL là et ça devrait corriger ce problème de "type" (d'ailleurs les entiers ne quotent pas en SQL, chose qui n'aurait pas non plus permis d'insérer NULL).


 
Merci pour les éclaircissements, je ne suis pas du tout compétent en php, tu pourrais détailler ce point ?
 
Merci

n°2421034
mechkurt
Posté le 01-07-2022 à 16:41:16  profilanswer
 
n°2421045
mechkurt
Posté le 01-07-2022 à 20:05:19  profilanswer
 

Après j'ai pas tout compris mais ptet que tu veux juste tester si tes $_GET sont remplis...
 
Un truc du genre :

Code :
  1. $pH= false;
  2. if(isset($_GET['pH']) && !empty($_GET['pH'])) {
  3.         $pH=$_GET['pH'];
  4. }
  5. [idem pour les autre variables]
  6. if ($pH && $chlore && $flow) {
  7.     [faire ta requête]
  8. }


Message édité par mechkurt le 01-07-2022 à 20:05:51

---------------
D3
n°2421066
rufo
Pas me confondre avec Lycos!
Posté le 02-07-2022 à 12:13:39  profilanswer
 

Mettre NULL pour un ID, je pense que ça va mal se passer :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2421067
mechkurt
Posté le 02-07-2022 à 12:34:44  profilanswer
 

Nop, c'est ce qu'il faut faire en MySQL quand tu as une colonne en autoincrement (tu peux aussi ne pas spécifier la colonne).


---------------
D3
n°2421071
rufo
Pas me confondre avec Lycos!
Posté le 02-07-2022 à 13:08:06  profilanswer
 

Ah ok. Moi, je mets pas la colonne.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2421083
mechkurt
Posté le 02-07-2022 à 16:48:07  profilanswer
 

Je sais pas depuis quel version ça fonctionne mais j'ai appris à faire comme ça donc ça doit remonter un peu... [:gilbert gosseyn]


---------------
D3
n°2421486
spark
Luc ?
Posté le 08-07-2022 à 06:02:59  profilanswer
 

Code :
  1. if(isset($_GET['pH']))
  2. {
  3.         $chlore=$_GET['pH'];
  4. }
  5. if(isset($_GET['chlore']))
  6. {
  7.         $chlore=$_GET['chlore'];
  8. }


 
 
le ph doit s'écrire :  
 

Code :
  1. $pH=$_GET['pH'];

Message cité 1 fois
Message édité par spark le 08-07-2022 à 06:04:09

---------------
Un cycle complet sera une série de 100.
mood
Publicité
Posté le 08-07-2022 à 06:02:59  profilanswer
 

n°2421487
rufo
Pas me confondre avec Lycos!
Posté le 08-07-2022 à 07:43:44  profilanswer
 

Petit rappel : empty() renvoie true si ta variable = 0, ou =false ou = '' ou = null ;)
De même, si $pH = 0 et que tu fais if ($pH == FALSE), ça renvoie true.
Par contre if ($pH === FALSE) renvoie false.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2421492
dureiken
Posté le 08-07-2022 à 09:45:18  profilanswer
 

spark a écrit :

Code :
  1. if(isset($_GET['pH']))
  2. {
  3.         $chlore=$_GET['pH'];
  4. }
  5. if(isset($_GET['chlore']))
  6. {
  7.         $chlore=$_GET['chlore'];
  8. }


 
 
le ph doit s'écrire :  
 

Code :
  1. $pH=$_GET['pH'];



 
oui pardon c'est un copier/coller pendant un test
 
pour voir si vous suivez :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP rentre 0 au lieu de NULL

 

Sujets relatifs
Microservices : Go, Swoole ou Php Natif ?Saut de ligne code PHP
[résolu] Typage fort et valeur null dans paramétre d'une méthodePHP - Fonction Readline non détectée
[Powershell] Condition Vide ou nullExcel+PHP/Mysql
Envoi de mail par PHPquerySelector retourne null
Problème avec PHP 8Synchroniser la BD de 2 applis web PHP
Plus de sujets relatifs à : PHP rentre 0 au lieu de NULL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR