Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać pliki .pdf w MySQL jako bloki BLOB przy użyciu PHP?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajność pamięci podręcznej zapytań

  2. Co lepsze - wiele małych stolików czy jeden duży stół?

  3. WAMP Nie można uzyskać dostępu do sieci lokalnej 403 Zabroniony

  4. MySQL porównuje teraz() (tylko data, nie czas) z polem daty i godziny

  5. Czy prawidłowo odkażam/uciekam?