Question

J'ai lu ce tutoriel sur le stockage des images dans DB. Dans le tutoriel, l'auteur échappe des caractères spéciaux dans les données binaires avant d'insérer: http: / /www.phpriot.com/articles/images-in-mysql/7 (en utilisant addslashes bien mysql_real_escape_string est préférable - mais est une autre question)

.

Le point est, lors de l'affichage, il affiche uniquement les données comme il est stocké: http://www.phpriot.com/articles/images-in-mysql/8

Mes questions:

1) Est-ce que nous avons besoin d'échapper à des caractères spéciaux, même pour le type de champ binaire (blob)?

2) Si oui, alors, ne nous ont pas besoin de « unescape » les caractères à nouveau afin d'afficher l'image correctement? (Si oui, quelle est la meilleure façon de le faire tout commentaire sur l'efficacité Pour les grandes images.? S'échapper et déséchapper peut être un gros frais généraux).

Ou est-ce que ma compréhension échapper est tout à fait tort (et échapper affecte uniquement la requête et non les données finales d'/ stockées?).

Merci

JP

Était-ce utile?

La solution

Votre compréhension de fuite est faux. Les données insérées dans la base de données est échappé, de sorte que l'analyseur de requête voit les informations comme prévu.

Prenez la chaîne "Earl Grey» Jean-Luc Picard". Échapper résultats dans: 'Jean-Luc \'Earl Grey\' Picard'

Quand MySQL reçoit, il comprend que les citations échappées doivent être pris à la lettre, qui est ce que signifie échapper, et va les stocker dans la base de données. Il ne stocke pas les escape-caractères dans la base de données. Le \ MySQL indique qu'il devrait prendre le caractère suivant littéralement.

Lors de la récupération, les données sont présentées à votre demande sans que les caractères s'échappent, car ils sont supprimés lors de l'analyse de la requête.

Autres conseils

  

1) Est-ce que nous avons besoin d'échapper à des caractères spéciaux, même pour le type de champ binaire (blob)?

Oui, parce que mysql_real_escape_string() (ce qui est en effet le seul à utiliser) offre une protection contre les attaques par injection SQL, ce qui pourrait facilement être à l'intérieur d'un fichier image aussi bien. Tous données arbitraires vous nourrissez dans une base de données doit être assaini d'abord.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top