Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để lưu trữ tệp .pdf vào MySQL dưới dạng BLOB bằng PHP?

ĐÃ CHỈNH SỬA ĐỂ THÊM :Đoạn mã sau đã lỗi thời và sẽ không hoạt động trong PHP 7. Hãy xem ghi chú ở cuối câu trả lời để biết thêm chi tiết.

Giả sử cấu trúc bảng gồm một số nguyên ID và một cột DỮ LIỆU blob và giả sử các hàm MySQL đang được sử dụng để giao tiếp với cơ sở dữ liệu, bạn có thể làm như sau:

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

Tuy nhiên, một lời cảnh báo, lưu trữ các đốm màu trong cơ sở dữ liệu thường không được coi là ý tưởng tốt nhất vì nó có thể gây ra hiện tượng phồng bảng và có một số vấn đề khác liên quan đến nó. Một cách tiếp cận tốt hơn sẽ là di chuyển tệp đến một nơi nào đó trong hệ thống tệp nơi nó có thể được truy xuất và lưu trữ đường dẫn đến tệp trong cơ sở dữ liệu thay vì chính tệp đó.

Ngoài ra, việc sử dụng lệnh gọi hàm mysql_ * không được khuyến khích vì các phương pháp đó không được chấp nhận một cách hiệu quả và không thực sự được xây dựng với các phiên bản MySQL mới hơn 4.x. Thay vào đó, bạn nên chuyển sang mysqli hoặc PDO.

CẬP NHẬT :các hàm mysql_ * không được dùng nữa trong PHP 5.x và ĐƯỢC LOẠI BỎ HOÀN TOÀN TRONG PHP 7! Bây giờ bạn không có lựa chọn nào khác ngoài việc chuyển sang một Cơ sở dữ liệu trừu tượng hiện đại hơn (MySQLI, PDO). Tôi đã quyết định giữ nguyên câu trả lời ban đầu ở trên vì lý do lịch sử nhưng không thực sự sử dụng nó

Đây là cách thực hiện với mysqli ở chế độ thủ tục:

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

Cách lý tưởng để làm điều đó là sử dụng các câu lệnh chuẩn bị sẵn 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. Tại sao Rails lại thêm `OR 1 =0` vào các truy vấn bằng cách sử dụng cú pháp băm mệnh đề where với một phạm vi?

  2. Django và các kết nối cơ sở dữ liệu chỉ đọc

  3. PHP MYSQL PDO SUM của các cột

  4. Hibernate OnDelete Cascade không hoạt động cho MySql nhưng hoạt động trên postgres và Ms-Sql

  5. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Ubuntu 9.04 (Jaunty)