Probleme UPDATE mysql

Fermé
Kasp3r - 27 déc. 2008 à 23:38
 toto - 29 déc. 2008 à 10:36
Bonsoir,

je m'arrache les cheveux depuis 1H sur un update qui ne marche pas...pourtant tout me semble correcte.

Je vous montre quand même mon code :


<?php

echo("$MaForce");

$ForceEnPlus = $MaForce + 1;

echo("$ForceEnPlus");

$sql = mysql_query("UPDATE combattant SET force='$ForceEnPlus' where login='$login'") or die("erreur");

?>

Je vois bien la variable $MaForce quand je fais l'écho mais l'update ne marche pas, pourtant je suis bien connecté à ma base de données, aidez moi !
A voir également:

3 réponses

Utilisateur anonyme
28 déc. 2008 à 09:25
bonjour,
$query = "UPDATE combattant SET force='".$ForceEnPlus."' where login='".$login'.";
$sql = mysql_query($query) or die("erreur");
--
0
Bonjour

giheller, tu n'as rien changé du tout à la requête de Kasp3r. Pourquoi ça changerait ?

Kasp3r, 'force' a une signification en Mysql. Si tu veux absolument l'utiliser comme nom de champ, entoure-le d'accents graves : `force`
Il est plus sage d'entourer systématiquement les noms de tables et de champs de `` en mysql.
Et de faire die (mysql_error()) qui te donne quelques précisions sur la cause de l'erreur, alors qu'un simple die ("erreur") ne t'apprend pas grand chose.
0
Utilisateur anonyme
28 déc. 2008 à 11:57
Bonjour,
j'ai séparé les varaibles avec un $ des constantes de la requête.
si cela ne change rien (en théorie) il s'avère que certaines fois ça change (même si on n'est pas d'accord (moi non plus) mais c'est une réalité).

set force tel qu'il est écrit laisse supposer qu'une colonne de la table a ce nom.
et tant que les questions ne seront pas plus précises, les réponses seront du même ordre.
force est un mot réservé il faut donc écrire set `force`= ... avec des backquotes

Bonne journée à toi
0
toto > Utilisateur anonyme
28 déc. 2008 à 23:10
Je maintiens que tu n'as rien changé à la requête. Tu as légèrement modifié le programme, d'accord, mais CERTAINEMENT PAS la requête.
On peut vérifier sur un exemple, si $ForceEnPlus vaut 5 et $login vaut machin, la requête de Kasp3r est :
UPDATE combattant SET force='5' where login='machin'
La tienne est :
UPDATE combattant SET force='5' where login='machin'
(si on corrige la faute de frappe que tu avais faite à la fin)
Ça n'est pas la même requête ?

si cela ne change rien (en théorie) il s'avère que certaines fois ça change (même si on n'est pas d'accord (moi non plus) mais c'est une réalité). . Je te défie de trouver des valeurs de $ForceEnPlus et $login pour lesquelles vos deux programmes conduisent à des requêtes différentes. Tu n'as pas affirmé que c'était une réalité sans en avoir de preuves, n'est-ce pas ?
0
Utilisateur anonyme > toto
29 déc. 2008 à 08:03
Bonjour,
sans polémiquer, des preuves j'en ai tous les jours au boulot.
Fin

--
0
toto > Utilisateur anonyme
29 déc. 2008 à 09:18
Je ne souhaite pas polémiquer (je t'accorde que le mot défi était très maladroit et je te prie de m'excuser) je veux simplement être un peu moins idiot ce soir que ce matin.
Comme personnellement je n'ai jamais rencontré aucun comportement qui ne s'explique pas par les règles du PHP, je te demande comme un service de me fournir un de ces contre-exemples.
Merci d'avance.
0
Utilisateur anonyme > toto
29 déc. 2008 à 09:47
Bonjour,

la syntaxe utilisée permet de mieux distinguer (en les isolant entre les symboles de concaténation) les variables.
on rencontre (plus souvent qu'on ne le pense) certains oublis de quote qui entrainent des erreurs; c'est pourquoi ma première réaction.
comme tu le dis : le résultat est absolument identique (mais le codage est différent) quand il n'y a pas d'erreur de codage
ainsi et encore comme tu le dis ce n'est pas le comportement de PHP qui est en cause, mais l'écriture des utilisateurs.
par expérience, je préconise la syntaxe que j'ai donnée.

JL
--
0
Exact ça marche maintenant, merci !
0