====== 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;