Frage

Ich habe dieses Tutorial über das Speichern von Bildern in DB gelesen. Im Tutorial entgeht der Autor den Sonderzeichen in den Binärdaten, bevor er einfügt: http://www.phpriot.com/articles/images-in-mysql/7 (Verwendung addslashes obwohl mysql_real_escape_string ist vorzuziehen - aber das ist ein weiteres Problem).

Der Punkt ist, dass er bei der Anzeige nur die Daten so zeigt, wie sie gespeichert sind: http://www.phpriot.com/articles/images-in-mysql/8

Meine Fragen:

1) Müssen wir auch für Binärfeldtyp Sonderfiguren entkommen (Typenfeldtyp (blob)?

2) Wenn ja, müssen wir die Zeichen nicht erneut "entlesen", um das Bild korrekt anzuzeigen? (Wenn ja, was ist der beste Weg, dies zu tun. Irgendwelche Kommentare zu Effizienz? Für große Bilder: Es kann ein großer Overhead sein?)

Oder ist es so, dass mein Verständnis über die Flucht völlig falsch ist (und das Entweichen nur die Abfrage und nicht die endgültigen Daten beeinflusst?).

Danke

JP

War es hilfreich?

Lösung

Ihr Verständnis der Flucht ist falsch. Die in die Datenbank eingefügten Daten sind entkommen, so dass der Abfrage -Parser die Informationen wie beabsichtigt sieht.

Nehmen Sie die Schnur "Jean-Luc 'Earl Grey' Picard". Flucht führt zu: 'Jean-Luc \'Earl Grey\' Picard'

Wenn MySQL dies erhält, wird verstanden, dass die entkommenen Zitate buchstäblich genommen werden müssen, das ist das, was Flucht bedeutet und sie in der Datenbank speichern. Es wird die Escape-Character nicht in der Datenbank gespeichert. Das zeigt MySQL an, dass es den Charakter buchstäblich annehmen sollte.

Beim Abrufen werden die Daten Ihrer Anwendung ohne die entkommenen Zeichen präsentiert, da sie beim Parsen der Abfrage entfernt werden.

Andere Tipps

1) Müssen wir auch für Binärfeldtyp (Blob) Sonderzeichen entkommen?

Ja, weil mysql_real_escape_string() (Dies ist in der Tat derjenige, der verwendet wird) Schutz vor SQL -Injektionsangriffen, die sich auch leicht in einer Bilddatei befinden können. Irgendein willkürliche Daten, die Sie in eine Datenbank einfügen, müssen zuerst saniert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top