Requête SQL : Valeur enregistrée dans la table : 0 alors que j'attends : NULL...
Résolu/Fermé
Recoh
Messages postés
37
Date d'inscription
dimanche 19 juillet 2020
Statut
Membre
Dernière intervention
2 mars 2021
-
5 févr. 2021 à 17:05
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021 - 5 févr. 2021 à 19:51
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021 - 5 févr. 2021 à 19:51
A voir également:
- Requête SQL : Valeur enregistrée dans la table : 0 alors que j'attends : NULL...
- Blob sql ✓ - Forum Webmastering
- Récupération serveur sql - Télécharger - Gestion de données
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
- Sql lister les tables ✓ - Forum Programmation
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
3 réponses
Recoh
Messages postés
37
Date d'inscription
dimanche 19 juillet 2020
Statut
Membre
Dernière intervention
2 mars 2021
Modifié le 5 févr. 2021 à 17:21
Modifié le 5 févr. 2021 à 17:21
J'ai modifié la colonne menu de ma table pour passer de INT(1) à TINYTEXT(4) mais le résultat est le même via le script php (j'ai laissé coché "NULL" dans les caractéristiques de la colonne menu) : 0 !
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
Modifié le 5 févr. 2021 à 17:24
Modifié le 5 févr. 2021 à 17:24
Bonjour,
Ne pas confondre la valeur "NULL" qui est du texte ( et sera remplacé par un 0 si ton champ est de type numerique ( INT, BIGINT .. )
et la valeur NULL qui est bien.. la valeur NULL...
Donc, pour éviter les soucis
Dans ton html
Et côté PHP :
Un peu de lecture au passage :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Ne pas confondre la valeur "NULL" qui est du texte ( et sera remplacé par un 0 si ton champ est de type numerique ( INT, BIGINT .. )
et la valeur NULL qui est bien.. la valeur NULL...
Donc, pour éviter les soucis
Dans ton html
<select name="menu"> <option value="">aucun</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select>
Et côté PHP :
<?php //---------------------------------------------------------------------------------------// //affichage des erreurs PHP //---------------------------------------------------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //---------------------------------------------------------------------------------------// //connexion à la bdd // Que je placerai dans un fichier à part et que tu pourrais ensuite // inclure dans tes pages lorsque tu en as besoin //---------------------------------------------------------------------------------------// try{ $bdd =new PDO('mysql:host=sql.free.fr'; XXXXXXXX); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { echo 'Erreur : ',$e->getMessage(),'<br />'; die(); } //---------------------------------------------------------------------------------------// // récupération PROPRE des variables AVANT de les utiliser // et on nomme ses variables intelligemment pour pouvoir les retrouver facilement.. // et la fonction htmlspecialchars ne s'utilise QUE POUR de l'AFFICHAGE .. JAMAIS pour l'enregistrement ! //---------------------------------------------------------------------------------------// $label = !empty($_POST['label']) ? $_POST['label'] : NULL; $prix = !empty($_POST['prix']) ? $_POST['prix'] : NULL; $description = !empty($_POST['description']) ? $_POST['description'] : NULL; $menu = !empty($_POST['menu']) ? $_POST['menu'] : NULL; $reference = !empty($_POST['reference']) ? $_POST['reference'] : NULL; try{ //update produits : $sql = 'UPDATE produits SET label = :label , description = :description , prix = :prix , menu = :menu WHERE reference = :ref'; $requete = $bdd->prepare($sql); $requete->bindParam(':label',$label); $requete->bindParam(':description',$description); $requete->bindParam(':prix',$prix); $requete->bindParam(':menu',$menu); $requete->bindParam(':ref',$ref); $requete->execute(); } catch (PDOException $e) { echo 'Erreur : ',$e->getMessage(),'<br />'; die(); } //select try{ $sql = 'SELECT * FROM produits WHERE reference = :ref'; $requete = $bdd->prepare($sql); $requete->bindParam(':ref',$ref); $requete->execute(); $row = $requete->fetchAll(); // on stocke le resultat dans un array } catch (PDOException $e) { echo 'Erreur : ',$e->getMessage(),'<br />'; die(); }
Un peu de lecture au passage :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Recoh
Messages postés
37
Date d'inscription
dimanche 19 juillet 2020
Statut
Membre
Dernière intervention
2 mars 2021
5 févr. 2021 à 19:51
5 févr. 2021 à 19:51
C'est parfait ! J'ai pas pensé au "!" ...
Merci beaucoup, j'ai plusieurs livres sur php, mysql, etc., dommage qu'ils ne traitent pas du PDO en profondeur mais je vais m'en trouver un.
Je peaufine déjà ce que j'ai prévu avec ce petit site et je fais le point sur la sécurisation y des échanges avec sql.
Merci encore, tu vois qu'on peut faire un bond de 10 ans en avant !!
Bientôt php 7, 8...
:)
PS : J'hésite vraiment à utiliser mysqli_ puisque j'ai déjà commencé à utiliser PDO. Peut-être aurais-je dû commencer par mysqli_ ?
Merci beaucoup, j'ai plusieurs livres sur php, mysql, etc., dommage qu'ils ne traitent pas du PDO en profondeur mais je vais m'en trouver un.
Je peaufine déjà ce que j'ai prévu avec ce petit site et je fais le point sur la sécurisation y des échanges avec sql.
Merci encore, tu vois qu'on peut faire un bond de 10 ans en avant !!
Bientôt php 7, 8...
:)
PS : J'hésite vraiment à utiliser mysqli_ puisque j'ai déjà commencé à utiliser PDO. Peut-être aurais-je dû commencer par mysqli_ ?