Przechowuj pliki w polach BLOB za pomocą PHP i MySQL

Spisie treści

Kiedy tworzymy oprogramowanie lub serwis internetowy, który wykorzystuje pliki, musimy zdecydować, jak je przechowywać, jedną z możliwości jest utworzenie folderu i przechowywanie tam plików, a inną możliwością jest przechowywanie ich w bazie danych, musimy pamiętać że pole długowłosy może przechowywać do 4 gigabajtów.

Silnik bazy danych mySQL umożliwia korzystanie z pól blokowych, które przechowują informacje w formacie binarnym. Ten format pozwala na przechowywanie różnego rodzaju plików, takich jak Word, Excel, wszelkiego rodzaju obrazy, pliki pdf itp. W tym samouczku zobaczymy jak przechowywać pliki w tabeli bazy danych MySQL, dane zostaną wysłane z formularza html i przetworzone za pomocą PHP w celu zapisania plików w bazie danych.

Aby wykonać przykłady z samouczka, będziemy potrzebować serwera zdalnego lub lokalnego, który można zainstalować, tak jak widzieliśmy w samouczku:

  • Jak zainstalować Xampp, aby zamienić swój komputer w serwer WWW, w ten sposób będziemy mieli obsługę php i mysql oraz wszystkie niezbędne biblioteki.

Następnie stworzymy bazę danych, która będzie przechowywać dane pojazdu, ze zdjęciem i kartą techniczną w formacie pdf, do tego stworzymy z phpmyadmin przykład, który można nazwać krupierem. Następnie stworzymy tabelę samochodów.

 STWÓRZ BAZĘ DANYCH dealera; Struktura tabeli dla tabeli `autos` CREATE TABLE` autos` (`id` int (11) NOT NULL,` mark` varchar (150) DEFAULT '0', `model` varchar (150) DEFAULT '0',` photo` longblob) SILNIK = DOMYŚLNY ZESTAW ZNAKÓW InnoDB = latin1; Indeksy tabeli `autos` ALTER TABLE` autos` ADD PRIMARY KEY (`id`); AUTO_INCREMENT zrzuconych tabel AUTO_INCREMENT tabeli `autos` ALTER TABLE` autos` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT;
Kod tworzenia tabeli

Tworzymy strony PHP i formularz do rejestracji danych
Następnie utworzymy plik config.php skąd połączymy się z bazą danych:

 
Konfiguracja.php

Następnie stworzymy stronę w PHP, która będzie odpowiedzialna za wyświetlanie wszystkich rekordów tabeli autos.

 <? wyrzucił "
"; wyrzucił "
"; wyrzucił ""; wyrzucił ""; wyrzucił ""; wyrzucił ""; wyrzucił "

"; $ wynik = mysql_query (" SELECT * FROM `autos`") lub trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ wynik)) {foreach ($ wiersze AS $ klucz => $ wartość) {$ wiersze [klawisz $] = ukośniki (wartość $);} echo "
"; wyrzucił ""; wyrzucił ""; wyrzucił ""; wyrzucił " "; wyrzucił "

"; } wyrzucił "
MarkaModelZdjęciedziałania
". $ wiersze ['znak']."". $ wiersze ['model']." Zobacz zdjęcieEdytować Usunąć
"; echo" Nowy samochód ";?> var13 ->
Wymień wszystkie rekordy w tabeli

Formularz do rejestracji danych pozwalający na zarejestrowanie zdjęcia, do tego musimy użyć elementów file, które pozwolą nam wybrać plik z przeglądarki, a następnie przetworzyć go za pomocą PHP i zapisać dane w polach blob naszej tabeli autos z baza danych.

Tworzenie strony internetowej na naszym serwerze
Stronę tworzymy w folderze o nazwie koncesjonariusz na naszym serwerze. Strona internetowa będzie zawierała kod HTML i PHP, w postaci musimy użyć atrybutu enctype = "wieloczęściowe / dane formularza" oznacza to, że pliki można wysyłać za pośrednictwem formularza, jeśli nie posiada atrybutu, pliki nie mogą zostać wysłane.

Ta strona będzie się nazywać wysoki.php

Kod jest następujący:

 wartość $) {$ _POST [klucz $] = mysql_real_escape_string (wartość $); } // odczytujemy dane ze zdjęcia $ photo = $ _FILES ["photo"] ["tmp_name"]; $ nazwa zdjęcia = $ _FILES ["zdjęcie"] ["nazwa"]; // to jest plik, który dodamy do pola blob $ foto = $ _FILES ['foto'] ['tmp_name']; // konwertujemy go na binarny przed zapisaniem $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (`marke`,` model`, `photo`) WARTOŚCI ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Zdjęcie' ) "; mysql_query ($ sql) lub umrzeć (mysql_error ()); nagłówek ('Lokalizacja: Listautos.php'); }?> zm13 ->

Marka:

Model:

Zdjęcie:

Następnie będziemy musieli to pokazać, dla tego stworzymy stronę, która interpretuje plik binarny i pokazuje go, stworzymy stronę verfoto.php a my wskażemy identyfikator zdjęcia do pokazania.
 nienazwany dokument

Możemy również wyodrębnić atrybuty pliku, jeśli tego potrzebujemy, w następujący sposób:

 
Plik jest tymczasowo przechowywany w pamięci podczas procesu, w przypadku wystąpienia błędu dane mogą zostać utracone lub nie w pełni zapisane, skrypt PHP usuwa plik tymczasowy z pamięci po zakończeniu procesu, nawet jeśli nie kończy się on poprawnie.

Następnie stworzymy stronę do edycji danych samochodu, do którego będziemy dzwonić edit.php

 wartość $) {$ _POST [klucz $] = mysql_real_escape_string (wartość $); } // odczytujemy dane ze zdjęcia $ photo = $ _FILES ["photo"] ["tmp_name"]; $ nazwa_zdjęcia = $ _FILES ["zdjęcie"] ["nazwa"]; // to jest plik tymczasowy $ photo = $ _FILES ['photo'] ['tmp_name']; // odczytaj plik tymczasowy w postaci binarnej $ 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 `identyfikator` = 'identyfikator $'"; mysql_query ($ sql) lub umrzeć (mysql_error ()); nagłówek ('Lokalizacja: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE `id` = '$id'")); ?> zm13 ->

Marka:

Model:

Model:

Zdjęcie:

>

Musimy pamiętać, że jeśli usuniemy rekord, jednocześnie usuniemy pliki i nie będzie można ich odzyskać. Aby usunąć rekord, utworzymy stronę usuń.php i użyjemy następującego kodu.
 
Stworzyliśmy prosty kod bez zbytniego projektu, aby wyjaśnić, jak przechowywać pliki w polach blob, jedną z wad jest to, że rozmiar bazy danych znacznie rośnie podczas przechowywania plików w formacie binarnym.
Jedną z zalet jest to, że pliki są zapisywane w tabeli, co jest lepsze ze względów bezpieczeństwa, ponieważ dostęp do plików można uzyskać tylko wtedy, gdy masz uprawnienia do zarządzania bazą danych i nie ma jednego folderu fizycznego, z którego można pobrać pliki lub manipulować nimi przez atakującego.

Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave