[RESOLU] Textarea & Apostrophe

Eléphanteau du PHP | 18 Messages

08 juin 2015, 10:03

Bonjour,

Je possède un formulaire dans lequel se trouve un textarea, lorsqu'on remplit ce champ avec une apostrophe j’obtiens une erreur...
Comment puis je résoudre ce souci ?

Merci d'avance !

ynx
Mammouth du PHP | 586 Messages

08 juin 2015, 14:02

Salut,

Peux tu préciser le message d'erreur ?

Si il s'agit d'un problème d'enregistrement en base de données, tu dois échapper les caractères spéciaux de ta bdd dans tes données avant de les utiliser dans une requête sql. Plusieurs possibilités pour faire cela :
- si tu utilises PDO, tu dois utiliser des requêtes préparées ou la méthode PDO::query()
https://php.net/manual/fr/pdo.prepare.php
https://php.net/manual/fr/pdo.quote.php
- si tu utilises l'API Mysqli, tu dois utiliser mysqli_real_escape_string()
https://php.net/manual/fr/mysqli.real-escape-string.php
- si tu utilises l'API Mysql (obsolète) tu dois utiliser mysql_real_escape_string()
http://php.net/manual/fr/function.mysql ... string.php

Bonne journée
Modifié en dernier par ynx le 08 juin 2015, 15:14, modifié 1 fois.

Eléphanteau du PHP | 18 Messages

08 juin 2015, 14:38

Il m'affiche ça :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1'' at line 16

Je vais regarder les liens que t'as renseigné !

Eléphanteau du PHP | 16 Messages

08 juin 2015, 14:44

bonjour dilidim,
tes apostrophes sont interprêtées comme du code, il faut encoder ton texte avant de le mettre dans la base :
ajoute addslashes ($texte); au lieu de $texte
pour afficher ensuite le résultat, tu feras stripslashes($ta_requete['texte'];

Mais pour éviter les erreurs, vérifie bien que :
base de donnée en UTF-8
page en UTF-8
incrémentation simple (sans addslashes ou htmlentities),
affichage avec nl2br juste pour les retour chariots. nl2br($texte);

Enjoy !

ynx
Mammouth du PHP | 586 Messages

08 juin 2015, 15:17

Erreur de syntaxe sql : il s'agit bien d'une erreur liée aux caractères spéciaux de ta bdd.

@LittleFairy : l'utilisation de addslashes() n'est plus recommandée pour l'échappement des caractères spéciaux sql, mieux vaut utiliser les fonctions et/ou méthodes dédiées pour ça ;) (cf. précédent post)