Speichern Sie Dateien in BLOB-Feldern mit PHP und MySQL

Inhaltsverzeichnis

Wenn wir eine Software oder eine Website erstellen, die Dateien verwendet, müssen wir entscheiden, wie sie gespeichert werden. Eine der Möglichkeiten besteht darin, einen Ordner zu erstellen und die Dateien dort zu speichern, und eine andere Möglichkeit besteht darin, sie in der Datenbank zu speichern dass ein Feld Longblob Es kann bis zu 4 Gigabyte speichern.

Mit der mySQL-Datenbank-Engine können Sie Blockfelder verwenden, die Informationen im Binärformat speichern. In diesem Format können Sie verschiedene Arten von Dateien speichern, z. B. Word, Excel, alle Arten von Bildern, PDF-Dateien usw. In diesem Tutorial werden wir sehen So speichern Sie Dateien in einer MySQL-Datenbanktabelle, werden die Daten aus einem HTML-Formular gesendet und mit PHP verarbeitet, um die Dateien in der Datenbank zu speichern.

Um die Beispiele des Tutorials auszuführen, benötigen wir einen Remote-Server oder einen lokalen, der wie im Tutorial installiert installiert werden kann:

  • So installieren Sie Xampp, um Ihren Computer in einen Webserver zu verwandeln. Auf diese Weise haben wir Unterstützung für PHP und MySQL und alle erforderlichen Bibliotheken.

Als nächstes erstellen wir die Datenbank, in der die Fahrzeugdaten gespeichert werden, mit Foto und PDF-Datenblatt, dafür erstellen wir aus phpmyadmin das Beispiel, ein Händler genannt zu werden. Als nächstes erstellen wir die Tabelle Autos.

 CREATE DATABASE-Händler; Tabellenstruktur für Tabelle `autos` CREATE TABLE` autos` (`id` int (11) NOT NULL,` mark` varchar (150) DEFAULT '0', `model` varchar (150) DEFAULT '0',` photo` longblob) ENGINE = InnoDB DEFAULT CHARSET = latin1; Indizes der Tabelle `autos` ALTER TABLE` autos` ADD PRIMARY KEY (`id`); AUTO_INCREMENT der gedumpten Tabellen AUTO_INCREMENT der `autos`-Tabelle ALTER TABLE` autos` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT;
Tabellenerstellungscode

Wir erstellen PHP-Seiten und Formular zur Datenregistrierung
Dann wir erstellen eine config.php-Datei von wo aus wir eine Verbindung zur Datenbank herstellen:

 
config.php

Als nächstes werden wir eine Seite in PHP erstellen, die dafür verantwortlich ist, alle Datensätze der autos-Tabelle aufzulisten.

 <? rauswerfen "
"; rauswerfen "
"; rauswerfen ""; rauswerfen ""; rauswerfen ""; rauswerfen ""; rauswerfen "

"; $ result = mysql_query (" SELECT * FROM `autos`") oder trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ result)) {foreach ($ rows AS $ key => $ value) {$ Zeilen [$-Taste] = Streifenslashes ($-Wert);} echo "
"; rauswerfen ""; rauswerfen ""; rauswerfen ""; rauswerfen " "; rauswerfen "

"; } rauswerfen "
MarkeModellFotoAktionen
". $ Zeilen ['mark']."". $ Zeilen ['Modell']." Foto ansehenBearbeiten Entfernen
"; echo" Neues Auto ";?> var13 ->
Alle Datensätze in der Tabelle auflisten

Das Formular zur Registrierung der Daten, das es uns ermöglicht, ein Foto zu registrieren, dazu müssen wir Dateielemente verwenden, die es uns ermöglichen, eine Datei aus dem Browser auszuwählen und diese dann mit PHP zu verarbeiten und die Daten in den Blob-Feldern unserer Autos-Tabelle zu speichern die Datenbank.

Erstellung des Webs auf unserem Server
Wir erstellen das Web in einem Ordner namens concessionaire auf unserem Server. Die Webseite enthält den HTML- und PHP-Code, in der Form müssen wir das Attribut verwenden enctype = "multipart / form-data" das angibt, dass Dateien über das Formular gesendet werden können, wenn es das Attribut nicht hat, können Dateien nicht gesendet werden.

Diese Seite wird aufgerufen hoch.php

Der Code ist folgender:

 $-Wert) {$_POST [$-Schlüssel] = mysql_real_escape_string ($-Wert); } // wir lesen Daten vom Foto $ photo = $ _FILES ["photo"] ["tmp_name"]; $ Fotoname = $ _FILES ["Foto"] ["Name"]; // Dies ist die Datei, die wir dem Blob-Feld hinzufügen werden $ foto = $ _FILES ['foto'] ['tmp_name']; // wir konvertieren es in eine Binärdatei bevor wir es speichern $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (`make`,` model`, `photo`) VALUES ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Foto' ) "; mysql_query ($ sql) oder sterben (mysql_error ()); header ('Speicherort: Listautos.php'); }?> var13 ->

Marke:

Modell:

Foto:

Als nächstes müssen wir es dafür zeigen, wir werden eine Seite erstellen, die die Binärdatei interpretiert und anzeigt, wir werden die Seite erstellen verfoto.php und wir geben die ID des Fotos an, das angezeigt werden soll.
 Unbenanntes Dokument

Wir können die Attribute der Datei bei Bedarf auch auf folgende Weise extrahieren:

 
Die Datei wird während des Vorgangs temporär im Speicher abgelegt. Tritt ein Fehler auf, können die Daten verloren gehen oder nicht vollständig aufgezeichnet werden, das PHP-Skript entfernt die temporäre Datei nach Abschluss des Prozesses aus dem Speicher, auch wenn er nicht korrekt abgeschlossen wird.

Als nächstes erstellen wir die Seite zum Bearbeiten der Daten eines Autos, die wir aufrufen werden edit.php

 $-Wert) {$_POST [$-Schlüssel] = mysql_real_escape_string ($-Wert); } // wir lesen Daten vom Foto $ photo = $ _FILES ["photo"] ["tmp_name"]; $ Fotoname = $ _FILES ["Foto"] ["Name"]; // dies ist die temporäre Datei $ photo = $ _FILES ['photo'] ['tmp_name']; // die temporäre Datei im Binärformat lesen $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "UPDATE` cars` SET `brand` = '{$ _POST [' brand ']}',` model` = '{$ _POST [' model ']}', `photo` = '$ photo' WHERE `id` = '$-ID'"; mysql_query ($ sql) oder sterben (mysql_error ()); header ('Speicherort: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE `id` = '$ id'")); ?> var13 ->

Marke:

Modell:

Modell:

Foto:

>

Wir müssen bedenken, dass wir beim Löschen eines Datensatzes gleichzeitig die Dateien löschen und sie nicht wiederhergestellt werden können. Um einen Datensatz zu löschen, erstellen wir die Seite delete.php und wir werden den folgenden Code verwenden.
 
Wir haben einen einfachen Code ohne viel Design erstellt, um zu erklären, wie Dateien in Blob-Feldern gespeichert werden. Einer der Nachteile ist, dass die Größe der Datenbank stark anwächst, wenn Dateien im Binärformat gespeichert werden.
Einer der Vorteile ist, dass die Dateien in einer Tabelle gespeichert werden, was aus Sicherheitsgründen besser ist, da auf die Dateien nur zugegriffen werden kann, wenn Sie die Berechtigungen zum Verwalten der Datenbank haben und es keinen physischen Ordner gibt, aus dem die Dateien heruntergeladen werden können oder sie von einem Angreifer manipulieren.

Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave