Probeleme avec requete update(php)
titou123
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
arthezius Messages postés 3538 Date d'inscription Statut Membre Dernière intervention -
arthezius Messages postés 3538 Date d'inscription Statut Membre Dernière intervention -
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>";
A voir également:
- Probeleme avec requete update(php)
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Easy php - Télécharger - Divers Web & Internet
- Wsus offline update - Télécharger - Systèmes d'exploitation
7 réponses
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;
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:
Voici ce que je propose:
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
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.
Tu peux très bien l'écrire à ta manière:
Donne simplement une valeur à la variable $var.
Et fait un echo sur la variable $sql.
Maintenant, modifie la valeur de la variable:
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.
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+
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
ensuite, si pas de problème de connexion ajouter les apostrophes comme a dis mpmp93
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).
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).