2009-12-29 5 views
-2

J'insère du code HTML dans une table de base de données MySQL. Mais quand je le récupère, beaucoup de personnages sont mutilés. Deux cas spécifiques notables sont:Caractère mysql échappant à des guillemets simples

  1. les guillemets simples sont convertis en se,
  2. Code
  3. qui a lu plus tôt class='content-section developer-support' a obtenu converti en developer-support\="" class="\'content-section"

Je comprends que son un problème échappe. J'utilise mysql_real_escape_string sur le terrain avant de le pousser dans le db.

Quelle est la bonne façon d'éviter ce problème?


source:

$query = sprintf("insert into events (title, content) values('%s', '%s')", 
      mysql_real_escape_string($this->title, $conn), 
      mysql_real_escape_string($this->content, $conn) 
    ); 

le texte dont je parle est inséré dans le champ content.

et j'ai des magic_quotes activés. Je le réparerai.

+0

Que possédez-vous après avoir désactivé magic_quotes? –

Répondre

0

Je pense que vous avez activé magic_quotes dans votre configuration PHP et, semble-t-il, quelque chose tente de nettoyer votre code HTML. Vous devez montrer votre source.

+0

a ajouté une source à ma question – jrharshath

+0

J'ai supprimé magic_quotes_gpc. Maintenant ça fonctionne comme un charme! :) – jrharshath

0

Il peut être utile de mentionner que vous devriez peut-être envisager d'utiliser des instructions préparées avec MySQLi ou PDO. En substance, ce que vous avez affiché est assez similaire à l'exécution d'une instruction préparée et il est inutile d'utiliser mysql_real_escape_string sur chaque bit de données fournies par l'utilisateur. Il a aussi le plus d'être plus sûr et peut fournir de meilleures performances.

Également comme indiqué magic_quotes était probablement votre problème.

Questions connexes