Bewaar bestanden in BLOB-velden met PHP en MySQL

Inhoudsopgave

Wanneer we een software of een website maken die bestanden gebruikt, moeten we beslissen hoe we ze willen opslaan, een van de mogelijkheden is om een ​​map te maken en de bestanden daar op te slaan en een andere mogelijkheid is om ze op te slaan in de database, we moeten in gedachten houden dat een veld lange klodder het kan tot 4 gigabyte opslaan.

Met de mySQL-database-engine kunt u blokvelden gebruiken die informatie in binair formaat opslaan. Met dit formaat kunt u verschillende soorten bestanden opslaan, zoals Word, Excel, elk type afbeeldingen, pdf-bestanden, enz. In deze tutorial zullen we zien hoe bestanden op te slaan in een MySQL-databasetabel, worden de gegevens vanuit een html-formulier verzonden en met PHP verwerkt om de bestanden in de database op te slaan.

Om de voorbeelden van de tutorial uit te voeren, hebben we een externe server of een lokale server nodig die kan worden geïnstalleerd zoals we in de tutorial hebben gezien:

  • Hoe u Xampp installeert om van uw computer een webserver te maken, op deze manier hebben we ondersteuning voor php en mysql en alle benodigde bibliotheken.

Vervolgens zullen we de database maken die voertuiggegevens zal opslaan, met foto en pdf-technische fiche, hiervoor zullen we maken van phpmyadmin het voorbeeld om een ​​dealer te worden genoemd. Vervolgens gaan we de tafel met auto's maken.

 MAAK DATABASE dealer; Tabelstructuur voor tabel `autos` CREATE TABLE` autos` (`id` int (11) NOT NULL,` mark` varchar (150) DEFAULT '0', `model` varchar (150) DEFAULT '0',` photo` longblob) MOTOR = InnoDB STANDAARD CHARSET = latin1; Indexen van de tabel `autos` ALTER TABLE` autos` ADD PRIMARY KEY (`id`); AUTO_INCREMENT van de gedumpte tabellen AUTO_INCREMENT van de `autos` tabel ALTER TABLE` autos` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT;
Code voor het maken van tabellen

We maken PHP-pagina's en formulieren voor gegevensregistratie
Vervolgens we zullen een config.php-bestand maken van waaruit we verbinding maken met de database:

 
Configuratie.php

Vervolgens gaan we een pagina in PHP maken die verantwoordelijk is voor het weergeven van alle records van de autos-tabel.

 <? gooide uit "
"; gooide uit "
"; gooide uit ""; gooide uit ""; gooide uit ""; gooide uit ""; gooide uit "

"; $ resultaat = mysql_query ("SELECT * FROM `autos`") of trigger_error (mysql_error ()); while ($ rijen = mysql_fetch_array ($ resultaat)) {foreach ($ rijen AS $ key => $ waarde) {$ rijen [$ key] = stripslashes ($ waarde);} echo "
"; gooide uit ""; gooide uit ""; gooide uit ""; gooide uit " "; gooide uit "

"; } gooide uit "
MerkModelFotoActies
". $ rijen ['mark']."". $ rijen ['model']." Bekijk fotoBewerking Verwijderen
"; echo" Nieuwe auto ";?> var13 ->
Alle records in de tabel weergeven

Het formulier om de gegevens te registreren waarmee we een foto kunnen registreren, hiervoor moeten we bestandselementen gebruiken waarmee we een bestand uit de browser kunnen selecteren en het vervolgens met PHP kunnen verwerken en de gegevens kunnen opslaan in de blob-velden van onze autos-tabel van de databank.

Creatie van het web op onze server
We creëren het web in een map met de naam concessiehouder op onze server. De webpagina bevat de HTML- en PHP-code, in de vorm waarin we het attribuut moeten gebruiken enctype = "meerdelige / formuliergegevens" dat geeft aan dat bestanden kunnen worden verzonden via het formulier, als het niet het kenmerk heeft, kunnen bestanden niet worden verzonden.

Deze pagina heet high.php

De code is de volgende:

 $ waarde) {$ _POST [$ key] = mysql_real_escape_string ($ waarde); } // we lezen gegevens van de foto $ photo = $ _FILES ["photo"] ["tmp_name"]; $ fotonaam = $ _FILES ["foto"] ["naam"]; // dit is het bestand dat we zullen toevoegen aan het blob-veld $ foto = $ _FILES ['foto'] ['tmp_name']; // we converteren het naar binair voordat we het opslaan $ 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) of sterven (mysql_error ()); header ('Locatie: Listautos.php'); }?> var13 ->

Merk:

Model:

Foto:

Vervolgens zullen we het moeten laten zien, we zullen een pagina maken die het binaire bestand interpreteert en toont, we zullen de pagina maken verfoto.php en we zullen de id van de foto aangeven die moet worden weergegeven.
 Document zonder titel

We kunnen ook de attributen van het bestand extraheren als we het op de volgende manier nodig hebben:

 
Het bestand wordt tijdens het proces tijdelijk in het geheugen opgeslagen. Als er een fout optreedt, kunnen de gegevens verloren gaan of niet volledig worden opgenomen, het PHP-script verwijdert het tijdelijke bestand uit het geheugen nadat het proces is voltooid, zelfs als het niet correct wordt voltooid.

Vervolgens zullen we de pagina maken om de gegevens van een auto te bewerken, die we zullen noemen edit.php

 $ waarde) {$ _POST [$ key] = mysql_real_escape_string ($ waarde); } // we lezen gegevens van de foto $ photo = $ _FILES ["photo"] ["tmp_name"]; $ fotonaam = $ _FILES ["foto"] ["naam"]; // dit is het tijdelijke bestand $ photo = $ _FILES ['photo'] ['tmp_name']; // lees het tijdelijke bestand in binair $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "UPDATE` auto's` SET `brand` = '{$ _POST [' brand ']}',` model` = '{$ _POST [' model ']}', `photo` = '$ foto' WAAR `id` = '$ id'"; mysql_query ($ sql) of sterven (mysql_error ()); header ('Locatie: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE `id` = '$ id'")); ?> var13 ->

Merk:

Model:

Model:

Foto:

>

We moeten er rekening mee houden dat als we een record verwijderen, we de bestanden tegelijkertijd zullen verwijderen en dat ze niet kunnen worden hersteld. Om een ​​record te verwijderen, maken we de pagina aan delete.php en we zullen de volgende code gebruiken.
 
We hebben een eenvoudige code gemaakt zonder veel ontwerp om uit te leggen hoe bestanden in blob-velden moeten worden opgeslagen, een van de nadelen is dat de grootte van de database veel groeit bij het opslaan van bestanden in binair formaat.
Een van de voordelen is dat de bestanden in een tabel worden opgeslagen, wat om veiligheidsredenen beter is, omdat de bestanden alleen toegankelijk zijn als u de machtigingen hebt om de database te beheren en er geen fysieke map is waaruit u de bestanden kunt downloaden of manipuleer ze door een aanvaller.

Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave