2010-05-14 5 views
2

Lorsque j'utilise mysql_real_escape_string sur mes chaînes non échappées, les données de la base de données sont stockées avec les barres obliques inverses qui ne devraient pas se produire.mysql_real_escape_string stocke les données dans la base de données avec des barres obliques inverses

J'ai magic_quotes_gpc OFF pas sûr pourquoi cela se produit. Une idée ?

Y a-t-il des paramètres dans la base de données mysql qui doivent être modifiés? Je n'utilise pas addslashes n'importe où dans le code.

Langage PHP.

Aidez-nous s'il vous plaît.

Répondre

2

Il existe plusieurs variantes de magic_quotes qui sont toutes très invasives et ne peuvent pas être remplacées. Je pense qu'il est improbable que cette fuite supplémentaire soit faite par le SGBD.

Avez-vous vérifié à quoi ressemblent les données avant en appliquant le mysql_real_escape_string() - Je parierais que c'est déjà échappé d'une manière ou d'une autre.

C.

+0

Merci d'avoir répondu. Mais sans mysql_real_escape_string, la chaîne est stockée sans les barres obliques inverses, donc "sera stocké comme" et \ sera stocké comme \. Seulement quand j'utilise mysql_real_escape_string "être stocké sous \" et \ est stocké sous \\ S'il vous plaît, aidez-moi. – pks83

+0

@ pks283: c'est parce que vos données ont déjà été citées par magic gpc. C'est une façon bizarre d'assainir les données. donc la meilleure solution est d'éteindre la magie gpc et d'appliquer mysql_real_escape_string() – zerkms

+0

les guillemets magiques ne sont pas sur une autre partie du code qui ajoutait des barres obliques. Merci @symcbean. – pks83

0

la réponse est simple. Il n'y a aucun paramètre dans la base de données mysql qui doit être modifié. C'est votre code/paramètres.

Soit vous avezmagic_quotes_gpc et il doit être revérifié, ou une partie de votre code fait une autre barre oblique.

0

stripslashes() est lorsque la magic_quotes_gpc directive PHP est (il est activé par défaut), et vous n'êtes pas insérer ces données dans un endroit (tel comme base de données) qui exige échapper. Par exemple, si vous êtes simplement en train de sortir des données directement depuis un formulaire HTML .

<?php 
$str = "Is your name O\'reilly?"; 

// Outputs: Is your name O'reilly? 
echo stripslashes($str); 
?> 

Faites-nous savoir lorsque vous utilisez stripslashes, qu'est-ce que votre tour d'entrée en. At-il entrer dans le format requis. C'est pour vérifier si quelque chose ne va pas avec votre entrée à venir. Puisque vous avez dit cela sans appliquer mysql_real_escape_string vos données sont stockées sans blackSlashes ... et après l'application vous obtenez blackslash ... je me sens personnellement vérifier votre code si vous appliquez addslashes où.

Quelques questions ...

  1. Cela se produit uniquement dans cette fonction actuelle.
  2. Vérifiez que votre magic_quotes_gpc est activé ou désactivé.
  3. Pouvez-vous publier une partie de la fonction à l'origine de ce problème.
Questions connexes