Probeleme avec requete update(php)
titou123
Messages postés
89
Statut
Membre
-
arthezius Messages postés 3756 Statut Membre -
arthezius Messages postés 3756 Statut Membre -
Bonjour tout le monde j'ai un probleme avec la requete update dans php et je ne sais pas pour quoi la modification ne s'effectue pas dans ma base.voila mon code :
//connexion à la base
include("config.php");
mysql_connect($host,$user,$pwd);
mysql_select_db($bd);
//insertion dans la table article
$id=$_GET['x'];
echo "id=".$id;
$codeA=$_POST['zCodeA'];
$libA=$_POST['zLibA'];
$puA=$_POST['zPrixA'];
$cat=$_POST['zCodeCat'];
echo $codeA;
$requete="UPDATE articles SET codeA=$codeA,libA=$libA,puA=$puA,codeCat=$cat WHERE codeA=$id";
mysql_query($req);
echo "modifcation effectuee avec succees";
echo "<a href='article.php'>retour</a>";
//connexion à la base
include("config.php");
mysql_connect($host,$user,$pwd);
mysql_select_db($bd);
//insertion dans la table article
$id=$_GET['x'];
echo "id=".$id;
$codeA=$_POST['zCodeA'];
$libA=$_POST['zLibA'];
$puA=$_POST['zPrixA'];
$cat=$_POST['zCodeCat'];
echo $codeA;
$requete="UPDATE articles SET codeA=$codeA,libA=$libA,puA=$puA,codeCat=$cat WHERE codeA=$id";
mysql_query($req);
echo "modifcation effectuee avec succees";
echo "<a href='article.php'>retour</a>";
7 réponses
-
C'est normal, tout ce qui est variable doit être sorti des guillemets et concaténé avec le reste.
-
j'ai essayé mais ça n'as pas marché .svp pouvez vous réécrire la requête correctement.
-
Bonjour,
Pour reprendre le conseil de Varaldi Q, cela donnerait je pense:
$requete="UPDATE articles SET codeA=".$codeA.",libA=".$libA.",puA=".$puA.",codeCat=".$cat." WHERE codeA=".$id;-
-
Euh... oui mais non.
Suffit de faire:echo $requete;
pour voir qu'on se retrouve avec le même résultat.
Voici ce que je propose:$requete='UPDATE articles SET codeA="'.mysql_real_escape_string($codeA).'", libA="'.mysql_real_escape_string($libA).'", puA="'.mysql_real_escape_string($puA).'", codeCat="'.mysql_real_escape_string($cat).'" WHERE codeA="'.mysql_real_escape_string($id).'";
Je me suis permis au passage de rajouter la fonction mysql_real_escape_string()
Voir cette page: https://www.php.net/manual/fr/function.mysql-real-escape-string.php -
-
Le message de mpmp93 explique la différence entre tout exemple et le miens.
Tu peux comparer les deux exemple assez facilement.
Prends une requête simple.$sql='SELECT * FROM table WHERE champ="'.$var.'"';
Tu peux très bien l'écrire à ta manière:$sql="SELECT * FROM table WHERE champ=".$var;
Donne simplement une valeur à la variable $var.$var='exemple';
Et fait un echo sur la variable $sql.$var='exemple'; $sql="SELECT * FROM table WHERE champ=".$var; echo $sql;
Maintenant, modifie la valeur de la variable:$var='un exemple de code';
Compare les deux requêtes (ce qui est affiché avec echo).
L'ajout d'apostrophe et/ou de guillemet (voire mon exemple ou celui de mpmp93) permet d'avoir des valeurs qui contiennent des espaces.
En fait, ça change tout.
L'utilisation de la fonction mysql_real_escape_string() n'a rien à voir. Elle permet de protéger les requêtes SQL. -
-
-
Bonjour,
Simple, dans:
UPDATE articles SET codeA=$codeA,libA=$libA,puA=$puA,codeCat=$cat WHERE codeA=$id"
si je prends libA=$libA où $libA contient "NOIRMOUTIER" il y a des chances que ça passe:*
libA=NOIRMOUTIER
par contre, si $libA contient "NOISY LE GRAND", ça casse:
libA=NOISY LE GRAND
Toute chaîne affectée à un champ doit être encadrée de guillemets:
libA='NOISY LE GRAND'
Donc:
UPDATE articles SET codeA=$codeA,libA='$libA',puA='$puA', codeCat='$cat' WHERE codeA=$id"
Si vous mettez des valeurs numériques entre guillemets, ça passera également:
UPDATE articles SET codeA='$codeA', libA='$libA', puA='$puA', codeCat='$cat' WHERE codeA='$id'"
A+ -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Moi a ta place je commencerais par tester s'il y a bien une connexion donc
if (mysql_connect($host,$user,$pwd)){ if (mysql_select_db($bd)){ //......le reste du code } else {echo 'impossible de trouver la table';} } else { echo 'impossible de se connecter a la BDD';}
ensuite, si pas de problème de connexion ajouter les apostrophes comme a dis mpmp93
"UPDATE articles SET codeA='$codeA', libA='$libA', puA='$puA', codeCat='$cat' WHERE codeA='$id'"
si toujours rien faut vérifier si les nom des champs de la bdd sont identiques a ceux écrits dans la requête, attention a la casse (majuscule et minuscule). -