sql >> Databáze >  >> RDS >> Mysql

Jak uložit soubory .pdf do MySQL jako BLOB pomocí PHP?

UPRAVENO A PŘIDAT :Následující kód je zastaralý a nebude fungovat v PHP 7. Další podrobnosti naleznete v poznámce na konci odpovědi.

Za předpokladu struktury tabulky s celočíselným ID a sloupcem BLOB DATA a za předpokladu, že funkce MySQL se používají k rozhraní s databází, byste pravděpodobně mohli udělat něco takového:

$result = mysql_query 'INSERT INTO table (
    data
) VALUES (
    \'' . mysql_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf')) . '\'
);';

Upozornění:ukládání objektů BLOB do databází se obecně nepovažuje za nejlepší nápad, protože může způsobit nadýmání tabulky a je s tím spojena řada dalších problémů. Lepším přístupem by bylo přesunout soubor někam do souborového systému, kde jej lze získat, a uložit cestu k souboru do databáze místo samotného souboru.

Také se nedoporučuje používat volání funkcí mysql_*, protože tyto metody jsou účinně zastaralé a nejsou ve skutečnosti vytvořeny s ohledem na verze MySQL novější než 4.x. Místo toho byste měli přejít na mysqli nebo PDO.

AKTUALIZACE :funkce mysql_* jsou zastaralé v PHP 5.xa jsou V PHP 7 ÚPLNĚ ODSTRANĚNY! Nyní nemáte jinou možnost, než přejít na modernější Database Abstraction (MySQLI, PDO). Z historických důvodů jsem se rozhodl ponechat původní výše uvedenou odpověď nedotčenou, ale ve skutečnosti ji nepoužiji

Zde je návod, jak to udělat s mysqli v procedurálním režimu:

$result = mysqli_query ($db, 'INSERT INTO table (
    data
) VALUES (
    \'' . mysqli_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf'), $db) . '\'
);');

Ideální způsob, jak to udělat, je pomocí připravených příkazů MySQLI/PDO.



  1. Význam WHERE 1 v dotazech MySQL

  2. Jak pracovat s dědičností v Entity Framework Core

  3. Obrácení efektu `mysqli_real_escape_string`

  4. Instalace WordPress 5 na ZEIT Now s hostingem MySQL