Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mysql_query, Insert Into, Variable numerique ?

8 réponses
Avatar
mc1rhq3ews3lf9x
Bonjour !

Petite question sans doute simple, mais po trouve de solution...
Soit une table JolieTable avec un champ numérique Champ1

Pourquoi est ce que
$VariableQuelconque = 3
mysql_query("INSERT INTO JolieTable (Champ1) VALUES
('$VariableQuelconque')");
M'ajoute-t-il un enregistrement avec 0 comme valeur dans ce champ

alors que

mysql_query("INSERT INTO JolieTable (Champ1) VALUES ('3')");
Fonctionne correctement ?

Ou plutot que devrais-je modifier pour que ça joue? Merci vraiment
beaucoup d'avance, je rame, je rame...

8 réponses

Avatar
Antoine Polatouche
Bonjour !

Petite question sans doute simple, mais po trouve de solution...
Soit une table JolieTable avec un champ numérique Champ1

Pourquoi est ce que
$VariableQuelconque = 3
mysql_query("INSERT INTO JolieTable (Champ1) VALUES
('$VariableQuelconque')");
M'ajoute-t-il un enregistrement avec 0 comme valeur dans ce champ

alors que

mysql_query("INSERT INTO JolieTable (Champ1) VALUES ('3')");
Fonctionne correctement ?

Ou plutot que devrais-je modifier pour que ça joue? Merci vraiment
beaucoup d'avance, je rame, je rame...


mysql_query("INSERT INTO JolieTable (Champ1) VALUES
($VariableQuelconque)");

ce qui est entre simples quotes n'est pas interprété, et comme c'est un
champ numérique il ne doit pas y en avoir.

Avatar
CrazyCat
wrote:
$VariableQuelconque = 3
mysql_query("INSERT INTO JolieTable (Champ1) VALUES
('$VariableQuelconque')");
M'ajoute-t-il un enregistrement avec 0 comme valeur dans ce champ


1) error:
$VariableQuelconque=3; <== NB le ;
2) probable error:
'$VariableQuelconque' cherche à mettre la *chaine de caractère* dans ton
champ et non pas sa valeur.
Solution à envisager: enlever les simples quotes

--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Olivier Miakinen

Pourquoi est ce que
$VariableQuelconque = 3
mysql_query("INSERT INTO JolieTable (Champ1) VALUES
('$VariableQuelconque')");
M'ajoute-t-il un enregistrement avec 0 comme valeur dans ce champ

alors que

mysql_query("INSERT INTO JolieTable (Champ1) VALUES ('3')");
Fonctionne correctement ?


Je trouve ça parfaitement incompréhensible. C'est vraiment la même
variable que tu initialises et que tu utilises ? Par exemple la
différence entre $VariableQuelconque et $Variab1eQuelconque n'est pas
forcément visible au premier coup d'œil.


Essaye de tracer ce qui se passe, par exemple comme ceci :

$VariableQuelconque = 3;
echo "$VariableQuelconque<br>n";

$Requete = "INSERT INTO JolieTable (Champ1) VALUES
('$VariableQuelconque')";
echo $Requete;

mysql_query($Requete);

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Paul Delannoy
a écrit:
Bonjour !

Petite question sans doute simple, mais po trouve de solution...
Soit une table JolieTable avec un champ numérique Champ1

Pourquoi est ce que
$VariableQuelconque = 3
mysql_query("INSERT INTO JolieTable (Champ1) VALUES
('$VariableQuelconque')");
M'ajoute-t-il un enregistrement avec 0 comme valeur dans ce champ

alors que

mysql_query("INSERT INTO JolieTable (Champ1) VALUES ('3')");
Fonctionne correctement ?


Parce que '3' et le nombre trois ne sont pas le même objet dans une
mémoire d'ordinateur...

Ou plutot que devrais-je modifier pour que ça joue?
1) changer le type du champ1 pour numerique

(ou) 2) calculer la chaine de caractere qui est l'ecriture du nb trois e
pour l'inserer dans la table.

Merci vraiment
beaucoup d'avance, je rame, je rame...
de rien.


Avatar
Olivier Miakinen

mysql_query("INSERT INTO JolieTable (Champ1) VALUES
($VariableQuelconque)");

ce qui est entre simples quotes n'est pas interprété, et comme c'est un
champ numérique il ne doit pas y en avoir.


Ah mais non, les « ' » font partie de la chaîne, cette chaîne étant
délimitée par des « " ». La variable n'est donc *pas* entre guillemets
simples du point de vue de PHP.



1) error:
$VariableQuelconque=3; <== NB le ;


Oui, mais j'ai supposé que c'était juste une coquille ici et que le code
était correct.

2) probable error:
'$VariableQuelconque' cherche à mettre la *chaine de caractère* dans
ton champ et non pas sa valeur.
Solution à envisager: enlever les simples quotes


Pourquoi ça marcherait avec '3' alors ? Non, je ne crois pas que le
problème vienne de là.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
mc1rhq3ews3lf9x
Bon, alors, comme vos messages étaient unanimes : il faut que j'évite
de fumer le chat avant de programmer, j'ai donc bien tout refait les
tests avec et sans quotes, doubles-quotes et entre-quotes (aux
morilles).

Et mon jeu de mot devrait déjà vous prédire que... Ca maaaaaarche
!!! Ca maaaaaaarche !!! Saint PHP veillait sur moi !!!

J'ai simplement refait quelques tests, et donc je confirme que ça
marche bien avec des simples quotes.

Ce qui est le plus ennuyeux, c'est que je ne sais pas pourquoi !!!
Enfin bon, on va pas se plaindre, hein ! Une variable mal
orthographiée ? Peut être... mais je les ai pourtant scannées avec
mes yeux de lynx (fatigué ?)

Bon toujours est il que merci pour votre collaboration.
Avatar
CrazyCat
Olivier Miakinen wrote:
Essaye de tracer ce qui se passe, par exemple comme ceci :
$VariableQuelconque = 3;
echo "$VariableQuelconque<br>n";


echo '$VariableQuelconque';
donnera:
$VariableQuelconque

--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Olivier Miakinen

$VariableQuelconque = 3;
echo "$VariableQuelconque<br>n";


echo '$VariableQuelconque';
donnera:
$VariableQuelconque


Oui, mais ce n'est pas ce que j'ai écrit.

Par ailleurs :
echo "'$VariableQuelconque'";
donnera :
'3'

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)