Fonction update chez Online

Eléphant du PHP | 109 Messages

13 janv. 2012, 08:19

Bonjour
J'ai un soucis ma fonction update chez Online ne fonctionne plus alors que tout se passait bien avant
Je suppose qu'il y a eu un changement au niveau de leur serveur qui fait que je doive changer mon code mais a vrai dire pour moi tout est ok
si quelque 'un peut voir ou ca bug
j'ai un message d'erreur d'insertion dans la base
merci
Nadège

Code : Tout sélectionner

function modifier_contenu($id,$fr1,$fr2,$gb1,$gb2){ //vérification des paramètres passés $tab_erreur = array(); if(is_null($fr1)){ $tab_erreur["fr1"] = $fr1; } if(is_null($fr2)){ $tab_erreur["fr2"] = $fr2; } if(is_null($gb1)){ $tab_erreur["gb1"] = $gb1; } if(is_null($gb2)){ $tab_erreur["gb2"] = $gb2; } //affichage du tableau d'erreurs si elles existent $nb_erreur = count($tab_erreur); if($nb_erreur > 0){ echo $tab_erreur; exit(); } $up="UPDATE contenu SET fr1='$fr1', fr2='$fr2', gb1='$gb1', gb2='$gb2' WHERE id=$id"; echo '<br>'.$up; $resultat=mysql_query($up); if ($resultat){ return true; } else { return false; } }
sur la page du site

Code : Tout sélectionner

$UP="UPDATE contenu SET 'fr1'='$fr1' AND 'fr2'='$fr2'AND'gb1'='$gb1'AND'gb2'='$gb2' WHERE id='$id'"; mysql_query($UP); echo $UP; echo"<br><br><div align=\"center\">Votre modification a bien été enregistrée"; echo"<p align=\"center\"><a href=\"index.php\">retour à l'accueil de l'adminsitration</a></p>";

ViPHP
ViPHP | 2577 Messages

13 janv. 2012, 09:47

Il faudrait nous donner le SQL tel qu'affiché par l'echo et le message d'erreur de mysql_error().

Il ne faut pas mettre and, mais une virgule dans la partie set.

ViPHP
xTG
ViPHP | 7331 Messages

13 janv. 2012, 11:10

Il ne faut pas mettre and, mais une virgule dans la partie set.
Les deux écritures sont autorisées.

Dans l'ensemble on peut voir que tu ne protèges pas tes variables insérées dans la requête.
Donc je parierai sur la configuration magic_quote qui était auparavant active et qui t'échappait donc toute données provenant d'un formulaire évitant ainsi l'erreur SQL.
Regardes la fonction mysql_real_escape_string() dans la documentation. ;)

Eléphant du PHP | 109 Messages

14 janv. 2012, 11:15

Bonjour
Effectivement je viens de faire un texte c'est effetivement les apostrophes qui font bugguer le tout
j'ai donc essayer la fonction mysql_real_escape_string
mais ce ne fonctionne pas, je n'ai aucun message d'erreur mais rien ne s'affiche (comme si la fonction n'etait pas lue)

Code : Tout sélectionner

$up=sprintf("UPDATE contenu SET fr1='$fr1', fr2='$fr2', gb1='$gb1', gb2='$gb2' WHERE id=$id"; mysql_real_escape_string($id), mysql_real_escape_string($fr1), mysql_real_escape_string($fr2); mysql_real_escape_string($gb1), mysql_real_escape_string($gb2));
merci

ViPHP
xTG
ViPHP | 7331 Messages

14 janv. 2012, 11:21

Utilises les avant le sprintf(). ^^'
Et le prototype de la fonction indique l'utilisation suivante :
$chaine_echappe = mysql_real_escape_string($chaine_non_echappe);

Eléphant du PHP | 109 Messages

14 janv. 2012, 11:59

effectivement ca marche mieux comme ca
merci
Nadege