|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : juillet 2007 Messages : 81 ![]() |
Bonjour,
J'ai un petit soucis lors de l'enregistrement de données dans ma base de données MySQL. Lorsque j'enregistre un champs vide, au lieu de trouver NULL je trouve 0. Je pense que celà vient de mon code car si j'insère un nouveau champs depuis l'interface de phpMyAdmin je trouve bien la valeur NULL. Voilà le bout de code que j'utilise pour l'enregistrement (code recommandé par le CMS Drupal que j'utilise): Code :
db_query("INSERT INTO {ma table} (vid, nid, un_champs) VALUES (%d, %d, %d)", $node->vid, $node->nid, $node->un_champs); --- EDIT --- Je viens de comprendre quelque chose, comme mon champs est de type entier j'ai mis: %d ce qui est apparemment juste mais si je met: $node->un_champs = NULL; ça ne passe évidement pas dans %d. Il faudrait que je mette %s à moins qu'il y ai une autre solution? |
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Qu'est ce qui ne te plait pas dans ta solution ?
|
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : juillet 2007 Messages : 81 ![]() |
Hé bien vu que je n'aimerais enregistrer que des nombres de type entier, ça me semble un peu bizard d'utiliser %s...mais si il n'y a pas de solution autre que cela, je ferais avec.
|
|
|
00
|
|
|
#4 | ||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Salut
Je ne connais pas Drupal, mais si en mettant %s et que la valeur du champ est NULL et qu'au bout la valeur enregistrée est bien NULL, je ne vois où est le problème. Sinon, reste peut être 2 autres alternatives s'il est possible de rendre cette requête un peu dynamique. - Si on détecte que la valeur doit être NULL, pourquoi ne pas mettre NULL plutôt que %s ? Ceci : Code :
Ceci : Code :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||
|
|
00
|
|
|
#5 | ||
|
Futur Membre du Club
![]() Inscription : juillet 2007 Messages : 81 ![]() |
Salut,
Merci pour ton aide. J'ai dit une grosse bêtise avec le %s, lors de l'enregistrement je me retrouve quand même avec la valeur 0. Le problème c'est que se champs pourrait ou non être remplis donc ta deuxième solution ne va pas jouer. Maintenant ta première solution jouerait mais se qui voudrait dire si j'ai bien compris que je devrais remplacer le NULL par ma variable. Exemple: Code :
J'ai pu lire cela ici: http://kolossaldrupal.org/docs/ecrire-code-securise |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
oui écrit comme ça il y a un probleme.
alors que : Code :
$une_valeur = empty($une_valeur) ? "NULL": fonction_protection($une_valeur);
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : juillet 2007 Messages : 81 ![]() |
Oui effectivement comme cela ça devrait jouer. Enfin ça ne va pas être très pratique à mettre en place car j'ai quand même 100 champs...j'ai pas encore finit moi.
Dans la function_protection, est-ce qu'il existe un code passe partout qui protégerait de l'injection sql? |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
Code :
mysql_real_escape_string($ta_chaîne à protéger)
__________________
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : juillet 2007 Messages : 81 ![]() |
Super, je vais faire comme ça alors. Merci beaucoup à tous ceux qui m'ont aidés.
![]() Ps: Oui c'est bien ça... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com