====== Dateien in einer MySQL-Datenbank speichern ====== ---- ===== BLOB - Binary Large Object ===== Binary Large Objects (BLOBs) sind große binäre Objekte wie z. B. Bild- oder Audiodateien. | **Datentyp** | **maximale Dateigröße** | | TINYBLOB | 256 Bytes | | BLOB | 64 KB | | MEDIUMBLOB | 16 MB | | LONGBLOB | 4 GB | ---- ===== Beispiel ===== **Ein mit [[:FPDF]] erzeugtes PDF in einer MySQL-Datenbank speichern:** $pdf = new PDF(); ... $Binary = $pdf->Output( "", "S" ); // Datei als Zeichenkette ausgeben $SQL = "INSERT INTO Dateien ( Binary ) VALUES ( :BINARY );" $res = $this->DB->prepare( $SQL ); $pdf->Close(); if( $res->execute( array( ":BINARY" => $Binary ) ) ) return true; **PDF-Datei aus Datenbank auslesen:** $SQL = "SELECT Binary FROM Dateien WHERE ID=" . $id; $PDO = $this->DB->query( $SQL ); if( $PDO->rowCount() == 1 ) // wenn die Datei gefunden wurde { $res = $PDO->fetch( PDO::FETCH_OBJ ); header("Content-Type: application/pdf"); header("Content-Description: File Transfer"); header("Content-disposition:inline; filename=PDF_Dokument.pdf"); echo $res->Binary; exit; } ---- ===== BLOB-Feld auf Inhalt prüfen ===== Mit dem folgenden mySQL-Statement werden alle Datensätze ausgegeben, die im BLOB-Feld "PDF" Daten enthält. SELECT * FROM Dateien WHERE LENGTH(PDF) > 0;