Page 1 sur 1

Prob dans le code

Posté : 15 mars 2005, 18:18
par invitééé
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.';';

Posté : 15 mars 2005, 18:23
par demipoulp
que donne un
echo $sup
?

Posté : 15 mars 2005, 18:25
par invitééé
je vais voir attend

Posté : 15 mars 2005, 18:37
par invitééé
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.' ;';


Posté : 15 mars 2005, 19:23
par fab
regarde a la fin ';'; y a un probleme :p
$modif='update '.$table.' set annee='.$modannee.', equipe='.$modequ.', resume='.$resum.',lien='.$mod.' where id='.$ide.' ;

Posté : 15 mars 2005, 19:37
par Xenon_54
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.

;)

Posté : 16 mars 2005, 10:31
par invitééé
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?

Posté : 16 mars 2005, 19:57
par Xenon_54
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à :)