EDYTOWANO, ABY DODAĆ :Poniższy kod jest nieaktualny i nie będzie działał w PHP 7. Więcej szczegółów znajdziesz w uwadze na dole odpowiedzi.
Zakładając strukturę tabeli z identyfikatorem całkowitym i kolumną Blob DATA oraz zakładając, że funkcje MySQL są używane do łączenia się z bazą danych, prawdopodobnie można zrobić coś takiego:
$result = mysql_query 'INSERT INTO table (
data
) VALUES (
\'' . mysql_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf')) . '\'
);';
Słowo ostrzeżenia:przechowywanie obiektów blob w bazach danych nie jest ogólnie uważane za najlepszy pomysł, ponieważ może powodować przerost tabeli i wiąże się z wieloma innymi problemami. Lepszym rozwiązaniem byłoby przeniesienie pliku gdzieś w systemie plików, skąd można go pobrać, i zapisanie ścieżki do pliku w bazie danych zamiast samego pliku.
Ponadto nie zaleca się używania wywołań funkcji mysql_*, ponieważ te metody są skutecznie przestarzałe i nie są tak naprawdę tworzone z myślą o wersjach MySQL nowszych niż 4.x. Zamiast tego powinieneś przełączyć się na mysqli lub PDO.
AKTUALIZUJ :funkcje mysql_* są przestarzałe w PHP 5.x i są CAŁKOWICIE USUNIĘTE W PHP 7! Nie masz teraz wyboru, jak tylko przejść do bardziej nowoczesnej abstrakcji bazy danych (MySQLI, PDO). Postanowiłem pozostawić powyższą pierwotną odpowiedź nienaruszoną ze względów historycznych, ale w rzeczywistości jej nie używam
Oto jak to zrobić z mysqli w trybie proceduralnym:
$result = mysqli_query ($db, 'INSERT INTO table (
data
) VALUES (
\'' . mysqli_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf'), $db) . '\'
);');
Idealnym sposobem na to jest użycie przygotowanych instrukcji MySQLI/PDO.