Prob dans le code

invitééé
Invité n'ayant pas de compte PHPfrance

15 mars 2005, 18:18

J'aurais une question ,pourquoi ce code ne fonctionne pas?c'est un probleme avec la variable $table.Lorsque je met le nom de la table sa fonctionne.
$sup='delete from '.$table.' where id='.$ids.';';

Eléphant du PHP | 200 Messages

15 mars 2005, 18:23

que donne un
echo $sup
?
Univers divided by 0 - cucumber error - reboot

invitééé
Invité n'ayant pas de compte PHPfrance

15 mars 2005, 18:25

je vais voir attend

invitééé
Invité n'ayant pas de compte PHPfrance

15 mars 2005, 18:37

excuse moi en fait celui ci marche mais j'en ai un autre ki marche pas si tu pouvais voir merci:
$modif='update '.$table.' set annee='.$modannee.', equipe='.$modequ.', resume='.$resum.',lien='.$mod.' where id='.$ide.' ;';


ViPHP
fab
ViPHP | 2657 Messages

15 mars 2005, 19:23

regarde a la fin ';'; y a un probleme :p
$modif='update '.$table.' set annee='.$modannee.', equipe='.$modequ.', resume='.$resum.',lien='.$mod.' where id='.$ide.' ;

Mammouth du PHP | 1885 Messages

15 mars 2005, 19:37

La personne termine ses requêtes avec ;
Regarde bien la requête qu'il t'a montré et voit qu'il n'y a pas de problème de ce coté là.

Le problème semble plutôt venir du fait que la personne tente peut-être de mettre à jour des champs qui sont en fait des chaines de caractères. Il est donc impératif de les entourer de single-quotes. Il faudrait donc changer les quotes utilisées pour sa chaine PHP afin de simplifier la création de sa requête:
$modif = "UPDATE $table
         SET annee=$modannee,
             equipe='$modequ',
             resume='$resum',
             lien='$mod'
         WHERE id=$ide";
Il faudrait biensûr s'assurer que chaque chaine est bien sécurisé par l'utilisation de la fonction mysql_escape_string() par exemple.

Note: Je n'ai que supposé que les autres champs étaient de type VARCHAR ou TEXT, je ne sais pas si c'est réellement le cas. Mais je suis certain que "annee" était bien un entier et non une chaine.

;)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

invitééé
Invité n'ayant pas de compte PHPfrance

16 mars 2005, 10:31

merci xenon pour ton aide mais il me crée toujours une erreur en me disant que c'est près des " .
J'ai écrit ce que tu m'as donné en rajoutant le ; a la fin de la requete.
Aussi si tu pouvais me dire à koi sert la fonction mysql_escape_string?

Mammouth du PHP | 1885 Messages

16 mars 2005, 19:57

Le but de la fonction mysql_escape_string() est de sécuriser les variables que l'on insèrera dans la requête SQL. Ainsi les caractères tel que ' par exemple seront protégés afin de ne pas générer d'erreur dans la requête. Tu peux imaginer le résultat si on venait à faire ceci:

Code : Tout sélectionner

UPDATE membres SET nom='Anne O'nyme' WHERE uid=4
Donc l'objectif est de modifier la chaine afin de la rendre sécuritaire et apte à être insérer dans une requête SQL. Reprenons l'exemple avec une variable:
$nom = "Anne O'nyme";
$sql = "UPDATE membres
        SET nom='$nom'
        WHERE uid=4";
Dams ce cas-ci, même requête et même erreur. Mais si on sécurise la variable:
$nom = mysql_escape_string("Anne O'nyme");
$sql = "UPDATE membres
        SET nom='$nom'
        WHERE uid=4";
Cette requête ne devrait plus générer d'erreur puisque mysql_escape_string() aura échappé le caractère '.

Voilà :)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP