Ankündigung

Einklappen
Keine Ankündigung bisher.

Speichern einer Bilddatei in einer MySQL-Tabelle

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MerlinderZauberer
    hat ein Thema erstellt Speichern einer Bilddatei in einer MySQL-Tabelle.

    Speichern einer Bilddatei in einer MySQL-Tabelle

    Hallo,

    ich bin auf folgendes Problem gestoßen und finde nicht die Lösung.

    In einer Datenbank-Tabelle befindet sich eine Spalte mit dem Datentyp Blob. Dort habe ich zum Beispiel kleine Bilder (Logos) gespeichert. Diese können die Bildformate jpg, gif usw. enthalten.

    Nun zu meinem Problem:
    Ich habe eine Klasse für die Sicherung von Datenbanktabellen entwickelt, die alle Tabellen ausliest und anschließend ein SQLDump erstellt. Solange ich keine Tabellen mit binären Blob-Feldern auslese, ist das einlesen des Dump in eine MySQL-Datenbank kein Problem.
    Enthält mein SQL-Dump Tabellen jedoch Blob-Felder (Bildinhalten), bekomme ich zum Beispiel folgenden Inhalt für eine solche Spalte:

    Code:
    GIF89a6 2 ÷å©A4ÀÇqdÒd...........
    Das einlesen mit solchen Werten mittels meines SQLDump schlägt dann an dieser Stelle fehl.

    Ich habe mir dann mal angschaut, wie ein solcher Inhalt beim Erstellen eines SQLDump in PHPMyAdmin aussieht:

    Code:
    0x47494638396134002700f70000000000.......
    Ich vermute mal, das hier die binären Daten mit Hilfe von pack() in einen anderen binären String umgewandelt wird. Einige Versuche meinerseits damit schlugen leider fehl.


    Ist die Funktion pack() wirklich die richtige Funktion? Wenn ja, welchen ersten Parameter muß ich übergeben? Wie sähe der Aufruf dieser Funktion aus, wenn mein Blob-Feld sich in einem Array befindet?

    Danke für eure Hilfe.

    Gruß Merlin der Zauberer

  • KingCrunch
    antwortet
    Nimm die englische Extended-CHM (oder sowas), da sind sie mit drin. Zumal die deutsche teilweise sowieso fehlerhaft is ...

    Einen Kommentar schreiben:


  • MerlinderZauberer
    antwortet
    Hallo PHPDummi,

    Zitat von phpdummi
    Im ersten Beispiel wurde unter anderem auch bin2hex verwendet
    Ich habe die heruntergeladene Dokumentation von PHP benutzt. Da sind die Userbeispiele scheinbar nicht drin (oder meine zu alt!)

    Merlin der Zauberer

    Einen Kommentar schreiben:


  • phpdummi
    antwortet
    Im ersten Beispiel wurde unter anderem auch bin2hex verwendet

    Aber schön das dein Problem gelöst ist!

    Einen Kommentar schreiben:


  • MerlinderZauberer
    antwortet
    Hallo,

    erst mal danke an euch beiden für die Antworten.

    Zitat von phpdummi
    Also über eine PHP-Funktion kann man sich doch super selber informieren!
    php.net: pack()
    Habe ich benutzt. Bin aber nun mal leider nicht zu meinen gewünschten Ergebnis gekommen.

    Zitat von phpdummi
    Abgesehen davon, dass es unnötig ist Bilder (seien sie noch so klein) in einer Datenbank zu speichern, sollte es mit dieser Methode Möglich sein.
    Ich habe aber nur mal kurz drüber geguckt, da ich wie gesagt kein Freund von Bildern in Datenbanken bin.
    Gibt es einen bestimmten Grund Bilder in der Datenbank zu speichern?
    Ich weiss. In diesem Fall habe ich für mich dazu entschlossen, diese Logos zu speichern. Bei dieser Tabelle handelt es sich um eine Referenz mit dem Namen von TV-Sendern und halt dem Senderlogo (max. 3 KB).

    Zitat von phpdummi
    EDIT:
    Direkt das erste Beispiel bietet die gewünschte Funktionalität an
    Auch das Beispiel habe ich gesehen. Aber was bringt mir das, wenn mein Ergebnis nicht stimmt? Deswegen habe ich angefragt, ob jemand Hilfestellung geben kann

    Nach nunmehr 3 Stunden habe ich eine Lösung gefunden. Und zwar benutze ich in meiner Klasse die Funktion bin2hex
    http://de2.php.net/manual/de/function.bin2hex.php Diese Funktion erfüllt genau meinen Zweck.
    Jedoch muss man vor den "transformierten String" die beiden Zeichen 0x ohne Lerrzeichen setzen.

    Da es hierbei auf den Datentyp in der Tabelle ankommt, sollte man zum auslesen dieser den MySQL-Befehl DESCRIBE http://dev.mysql.com/doc/refman/5.1/de/describe.html verwenden. Hier sind die Angaben des Datentyp wesentlicher genauer.

    Schöne Nacht noch

    Merlin der Zauberer

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    http://www.php-faq.de/q/q-db-blob.html

    Einen Kommentar schreiben:


  • phpdummi
    antwortet
    Also über eine PHP-Funktion kann man sich doch super selber informieren!
    php.net: pack()
    Abgesehen davon, dass es unnötig ist Bilder (seien sie noch so klein) in einer Datenbank zu speichern, sollte es mit dieser Methode Möglich sein.
    Ich habe aber nur mal kurz drüber geguckt, da ich wie gesagt kein Freund von Bildern in Datenbanken bin.
    Gibt es einen bestimmten Grund Bilder in der Datenbank zu speichern? Theoretisch dürfte der Aufruf eines Bildes doch viel länger dauern als per <img> oder?

    EDIT:
    Direkt das erste Beispiel bietet die gewünschte Funktionalität an

    Einen Kommentar schreiben:

Lädt...
X