Toujours ces satanés apostrophes

Fermé
lionel0769 Messages postés 2 Date d'inscription vendredi 5 février 2016 Statut Membre Dernière intervention 5 février 2016 - Modifié par jordane45 le 5/02/2016 à 10:46
lionel0769 Messages postés 2 Date d'inscription vendredi 5 février 2016 Statut Membre Dernière intervention 5 février 2016 - 5 févr. 2016 à 15:34
Bonjour,




Je m' occupe d'un forum ou des choses ont été développé et j'essaye de corriger certains bug et je bug sur celui des apostrophes pourtant j'ai lu plusieurs sujets mais j'ai du mal à suivre et en tout cas ça n'a rien donné

la portion de code incriminé:
function save_bac($bac, $user_id){
 global $db, $table_prefix;
 $lastupdate = date('Y-m-d G:i', time());
 if($bac->id){
  $sql = "UPDATE ".$table_prefix . "visiobac_bac
   SET biotope_id='".$bac->biotope->id."', volume='$bac->volume',filtration='".$bac->filtration."', eclairage='".$bac->eclairage."', sable='".$bac->sable."', description='".$bac->description."', url='".$bac->url."', longueur='$bac->longueur', largeur='$bac->largeur', hauteur='$bac->hauteur', marque='".$bac->marque."', lastupdate='$lastupdate'
   WHERE id=$bac->id";
 } else {
  $sql = "INSERT INTO ".$table_prefix ."visiobac_bac
  (user_id, biotope_id, volume, filtration, eclairage, sable, description, url, longueur, largeur, hauteur, marque, lastupdate) 
  VALUES ('$user_id','".$bac->biotope->id."','$bac->volume','".$bac->filtration."', '".$bac->eclairage."', '".$bac->sable."', '".$bac->description."', '".$bac->url."', '$bac->longueur', '$bac->largeur', '$bac->hauteur', '".$bac->marque."', '$lastupdate')";
 }
 $db->sql_query($sql);
} 


et lorsque $bac->description contient un apostrophe ça plante
Merci pour votre aide

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719
Modifié par jordane45 le 5/02/2016 à 12:55
Bonjour,

1 - ... tu utilises l'ancienne extension mysql ... elle est considérée comme obsolète.
Je t'invite à lire ceci :
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Puis à passer à mysqli ou ( je préfère....) la PDO.

Avec les nouvelles extensions mysql existe les requêtes préparées qui permettent, entre autres choses, de ne plus avoir à s'inquiéter des apostrophes....

2 - Dans le cas où tu ne voudrais pas passer à une nouvelle extension mysql (tu aurais tord... mais bon...) ... il existe la fonction addslashes
:http://php.net/manual/fr/function.addslashes.php





Cordialement, 
Jordane                                                                 
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
5 févr. 2016 à 11:30
Salut,

En complément de la réponse de jordane45, préfère l'utilisation de la fonction dédiée mysql_real_escape_string() à la place de addslashes() pour échapper les caractères spéciaux sql.

Dans l'idéal si tu passes à PDO ou Mysqli, l'équivalent est :
- les requêtes préparées ou quote() pour PDO
- mysqli_real_escape_string() pour Mysqli

Bonne journée
0
lionel0769 Messages postés 2 Date d'inscription vendredi 5 février 2016 Statut Membre Dernière intervention 5 février 2016
5 févr. 2016 à 15:34
Pourtant dans mon config.php , j'ai $dbms = 'mysqli';

je suppose qu'il y a beaucoup de code à changer?
0