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.