Tôi muốn biết cách lưu trữ hình ảnh và tệp trong cơ sở dữ liệu MySQL.
Tôi muốn lấy hình ảnh và tệp như thế
- CREATE DATABASE test_company;
8Ví dụ trên Facebook: facebook-example.com/rsrc.php/v2/yw/r/svhhh826blkd.png
Hdjemai
9.18945 Huy hiệu vàng71 Huy hiệu bạc90 Huy hiệu Đồng45 gold badges71 silver badges90 bronze badges
Hỏi ngày 12 tháng 9 năm 2013 lúc 16:47Sep 12, 2013 at 16:47
2
Tạo một cột BLOB trong bảng cơ sở dữ liệu,
Có lẽ là trung bình.
Nhưng thật tốt khi giữ ảnh trong thư mục và giữ đường dẫn trong cơ sở dữ liệu. Chúc mừng
CREATE TABLE tblname[ID INT,IMAGE BLOB];
INSERT INTO tblname[ID,IMAGE] VALUES[1,LOAD_FILE['C:/test.txt']];
Đã thêm câu trả lời từ các bình luận vào câu hỏi này trong hộp trả lời ..
Đã trả lời ngày 12 tháng 9 năm 2013 lúc 16:57Sep 12, 2013 at 16:57
5
Tác giả đã chọn các cô gái viết mã để nhận quyên góp như một phần của chương trình Write for quyên góp.
Giới thiệu
Một đối tượng lớn nhị phân [
- CREATE DATABASE test_company;
9] là loại dữ liệu MySQL có thể lưu trữ dữ liệu nhị phân như hình ảnh, đa phương tiện và các tệp PDF.Khi tạo các ứng dụng yêu cầu cơ sở dữ liệu kết hợp chặt chẽ, trong đó hình ảnh nên đồng bộ với dữ liệu liên quan [ví dụ: cổng thông tin nhân viên, cơ sở dữ liệu sinh viên hoặc ứng dụng tài chính], bạn có thể thấy thuận tiện để lưu trữ hình ảnh như hộ chiếu của sinh viên Ảnh và chữ ký trong cơ sở dữ liệu MySQL cùng với các thông tin liên quan khác.
Đây là nơi loại dữ liệu MySQL
- CREATE DATABASE test_company;
9 xuất hiện. Cách tiếp cận lập trình này giúp loại bỏ sự cần thiết phải tạo một hệ thống tệp riêng biệt để lưu trữ hình ảnh. Sơ đồ cũng tập trung vào cơ sở dữ liệu, làm cho nó di động và an toàn hơn vì dữ liệu được cách ly với hệ thống tệp. Tạo bản sao lưu cũng liền mạch hơn vì bạn có thể tạo một tệp kết xuất MySQL duy nhất chứa tất cả dữ liệu của bạn.Lấy dữ liệu nhanh hơn và khi tạo hồ sơ, bạn có thể chắc chắn rằng các quy tắc xác thực dữ liệu và tính toàn vẹn tham chiếu được duy trì đặc biệt là khi sử dụng các giao dịch MYSQL.
Trong hướng dẫn này, bạn sẽ sử dụng kiểu dữ liệu MySQL
- CREATE DATABASE test_company;
9 để lưu trữ hình ảnh với PHP trên Ubuntu 18.04.Điều kiện tiên quyết
Để làm theo với hướng dẫn này, bạn sẽ cần những điều sau:
- Máy chủ Ubuntu 18.04 được cấu hình bằng cách sử dụng thiết lập máy chủ ban đầu với Ubuntu 18.04 và người dùng không root với các đặc quyền
2.Output
Query OK, 1 row affected [0.01 sec] - Apache, MySQL và PHP được thiết lập bằng cách làm theo hướng dẫn về cách cài đặt xếp chồng Linux, Apache, MySQL, PHP [LAMP] trên Ubuntu 18.04. Đối với hướng dẫn này, không cần thiết phải tạo máy chủ ảo, vì vậy bạn có thể bỏ qua Bước 4.
Bước 1 - Tạo cơ sở dữ liệu
Bạn sẽ bắt đầu bằng cách tạo một cơ sở dữ liệu mẫu cho dự án của bạn. Để thực hiện việc này, SSH vào máy chủ của bạn và sau đó chạy lệnh sau để đăng nhập vào máy chủ MySQL của bạn dưới dạng root:
- sudo mysql -u root -p
Nhập mật khẩu gốc của cơ sở dữ liệu MySQL của bạn và nhấn
Output
Query OK, 1 row affected [0.01 sec]
3 để tiếp tục.Sau đó, chạy lệnh sau để tạo cơ sở dữ liệu. Trong hướng dẫn này, chúng tôi sẽ đặt tên cho nó
Output
Query OK, 1 row affected [0.01 sec]
4:- CREATE DATABASE test_company;
Khi cơ sở dữ liệu được tạo, bạn sẽ thấy đầu ra sau:
Output
Query OK, 1 row affected [0.01 sec]
Tiếp theo, tạo tài khoản
Output
Query OK, 1 row affected [0.01 sec]
5 trên máy chủ MySQL và nhớ thay thế Output
Query OK, 1 row affected [0.01 sec]
6 bằng mật khẩu mạnh:- CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
Bạn sẽ thấy đầu ra sau:
Output
Query OK, 0 rows affected [0.01 sec]
Để cấp
Output
Query OK, 1 row affected [0.01 sec]
5 Đặc quyền đầy đủ trên cơ sở dữ liệu Output
Query OK, 1 row affected [0.01 sec]
4, chạy:- GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';
Đảm bảo bạn nhận được đầu ra sau:
Output
Query OK, 0 rows affected [0.01 sec]
Cuối cùng, hãy xóa bảng đặc quyền để MySQL tải lại quyền:
- FLUSH PRIVILEGES;
Đảm bảo bạn thấy đầu ra sau:
Output
Query OK, 0 rows affected [0.01 sec]
Bây giờ, cơ sở dữ liệu
Output
Query OK, 1 row affected [0.01 sec]
4 và Output
Query OK, 1 row affected [0.01 sec]
5 đã sẵn sàng, bạn sẽ chuyển sang tạo bảng - CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
1 để lưu trữ các sản phẩm mẫu. Bạn sẽ sử dụng bảng này sau để chèn và truy xuất các bản ghi để chứng minh cách hoạt động của MySQL - CREATE DATABASE test_company;
9.Đăng xuất từ máy chủ MySQL:
- sudo mysql -u root -p
0Sau đó, đăng nhập lại với thông tin đăng nhập của
Output
Query OK, 1 row affected [0.01 sec]
5 mà bạn đã tạo:- sudo mysql -u root -p
1Khi được nhắc, hãy nhập mật khẩu cho
Output
Query OK, 1 row affected [0.01 sec]
5 và nhấn Output
Query OK, 1 row affected [0.01 sec]
3 để tiếp tục. Tiếp theo, chuyển sang cơ sở dữ liệu Output
Query OK, 1 row affected [0.01 sec]
4 bằng cách nhập các mục sau:- sudo mysql -u root -p
2Khi cơ sở dữ liệu
Output
Query OK, 1 row affected [0.01 sec]
4 được chọn, MySQL sẽ hiển thị:- sudo mysql -u root -p
3Tiếp theo, tạo bảng
- CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
1 bằng cách chạy:- sudo mysql -u root -p
4Lệnh này tạo ra một bảng có tên
- CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
1. Bảng có bốn cột:
0: Cột này sử dụng kiểu dữ liệuOutput
Query OK, 0 rows affected [0.01 sec]
1 để chứa một danh sách lớn các sản phẩm lên đến tối đa 2⁶³-1. Bạn đã đánh dấu cột làOutput
Query OK, 0 rows affected [0.01 sec]
2 để xác định duy nhất các sản phẩm. Để MySQL xử lý việc tạo các định danh mới cho các cột được chèn, bạn đã sử dụng từ khóaOutput
Query OK, 0 rows affected [0.01 sec]
3.Output
4: Cột này giữ tên của các sản phẩm. Bạn đã sử dụng kiểu dữ liệuOutput
Query OK, 0 rows affected [0.01 sec]
5 vì trường này thường sẽ xử lý các chữ số lên đến tối đaOutput
Query OK, 0 rows affected [0.01 sec]
6 ký tự. Giới hạn củaOutput
Query OK, 0 rows affected [0.01 sec]
6 chỉ là một giá trị giả thuyết được sử dụng cho mục đích của hướng dẫn này.Output
Query OK, 0 rows affected [0.01 sec]
8: Đối với mục đích trình diễn, bảngOutput
Query OK, 0 rows affected [0.01 sec]
1 của bạn chứa cột- CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
8 để lưu trữ giá bán lẻ của sản phẩm. Vì một số sản phẩm có thể có giá trị nổi [ví dụ: 23,69, 45,36, 102,99], nên bạn đã sử dụng loại dữ liệuOutput
Query OK, 0 rows affected [0.01 sec]
1.- GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';
2: Cột này sử dụng kiểu dữ liệu- GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';
9 để lưu trữ dữ liệu nhị phân thực tế của hình ảnh sản phẩm.- CREATE DATABASE test_company;
Bạn đã sử dụng lưu trữ
- GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';
4 - GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';
5 cho bảng để hỗ trợ một loạt các tính năng bao gồm các giao dịch MYSQL. Sau khi thực hiện điều này để tạo bảng - CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
1, bạn sẽ thấy đầu ra sau:- sudo mysql -u root -p
5Đăng xuất từ máy chủ MySQL của bạn:
- sudo mysql -u root -p
0Bạn sẽ nhận được đầu ra sau
- sudo mysql -u root -p
7Bảng
- CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
1 hiện đã sẵn sàng để lưu trữ một số bản ghi bao gồm các sản phẩm hình ảnh và bạn sẽ điền nó với một số sản phẩm trong bước tiếp theo.Bước 2 - Tạo tập lệnh PHP để kết nối và điền vào cơ sở dữ liệu
Trong bước này, bạn sẽ tạo một tập lệnh PHP sẽ kết nối với cơ sở dữ liệu MySQL mà bạn đã tạo trong bước 1. Tập lệnh sẽ chuẩn bị ba sản phẩm mẫu và chèn chúng vào bảng
- CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';
1.Để tạo mã PHP, hãy mở một tệp mới với trình soạn thảo văn bản của bạn:
- sudo mysql -u root -p
8Sau đó, nhập thông tin sau vào tệp và thay thế
Output
Query OK, 1 row affected [0.01 sec]
6 bằng mật khẩu Output
Query OK, 1 row affected [0.01 sec]
5 mà bạn đã tạo trong bước 1:/var/www/html/config.php
- sudo mysql -u root -p
9Lưu và đóng tập tin.
Trong tệp này, bạn đã sử dụng bốn hằng số PHP để kết nối với cơ sở dữ liệu MySQL mà bạn đã tạo trong bước 1:
1: Hằng số này giữ tên của cơ sở dữ liệuOutput
Query OK, 0 rows affected [0.01 sec]
4.Output
Query OK, 1 row affected [0.01 sec]
3: Biến này giữ tên người dùngOutput
Query OK, 0 rows affected [0.01 sec]
5.Output
Query OK, 1 row affected [0.01 sec]
5: Hằng số này lưu trữ MySQLOutput
Query OK, 0 rows affected [0.01 sec]
6 của tài khoảnOutput
Query OK, 1 row affected [0.01 sec]
5.Output
Query OK, 1 row affected [0.01 sec]
8: Điều này thể hiện máy chủ nơi cơ sở dữ liệu cư trú. Trong trường hợp này, bạn đang sử dụng máy chủOutput
Query OK, 0 rows affected [0.01 sec]
9.Output
Query OK, 0 rows affected [0.01 sec]
Dòng sau trong tệp của bạn bắt đầu đối tượng dữ liệu PHP [PDO] và kết nối với cơ sở dữ liệu MySQL:
- CREATE DATABASE test_company;
0Đến cuối tệp, bạn đã đặt một vài thuộc tính PDO:
0: Thuộc tính này hướng dẫn PDO ném một ngoại lệ có thể được ghi lại cho mục đích gỡ lỗi.- FLUSH PRIVILEGES;
1: Tùy chọn này tăng bảo mật bằng cách nói với công cụ cơ sở dữ liệu MySQL thực hiện chuẩn bị thay vì PDO.- FLUSH PRIVILEGES;
Bạn sẽ bao gồm tệp
- FLUSH PRIVILEGES;
2 trong hai tập lệnh PHP mà bạn sẽ tạo tiếp theo để chèn và truy xuất các bản ghi tương ứng.Đầu tiên, hãy tạo tập lệnh PHP
- FLUSH PRIVILEGES;
3 để chèn các bản ghi vào bảng sản phẩm:- CREATE DATABASE test_company;
1Sau đó, thêm thông tin sau vào tệp
- FLUSH PRIVILEGES;
3:/var/www/html/insert_products.php
- CREATE DATABASE test_company;
2Lưu và đóng tập tin.
Trong tệp này, bạn đã sử dụng bốn hằng số PHP để kết nối với cơ sở dữ liệu MySQL mà bạn đã tạo trong bước 1:
Output
Query OK, 0 rows affected [0.01 sec]
1: Hằng số này giữ tên của cơ sở dữ liệu Output
Query OK, 1 row affected [0.01 sec]
4.Output
Query OK, 0 rows affected [0.01 sec]
3: Biến này giữ tên người dùng Output
Query OK, 1 row affected [0.01 sec]
5.Output
Query OK, 0 rows affected [0.01 sec]
5: Hằng số này lưu trữ MySQL Output
Query OK, 1 row affected [0.01 sec]
6 của tài khoản Output
Query OK, 1 row affected [0.01 sec]
5.- CREATE DATABASE test_company;
3Output
Query OK, 0 rows affected [0.01 sec]
8: Điều này thể hiện máy chủ nơi cơ sở dữ liệu cư trú. Trong trường hợp này, bạn đang sử dụng máy chủ Output
Query OK, 0 rows affected [0.01 sec]
9.Dòng sau trong tệp của bạn bắt đầu đối tượng dữ liệu PHP [PDO] và kết nối với cơ sở dữ liệu MySQL:
Đến cuối tệp, bạn đã đặt một vài thuộc tính PDO:
- FLUSH PRIVILEGES;
0: Thuộc tính này hướng dẫn PDO ném một ngoại lệ có thể được ghi lại cho mục đích gỡ lỗi.- FLUSH PRIVILEGES;
1: Tùy chọn này tăng bảo mật bằng cách nói với công cụ cơ sở dữ liệu MySQL thực hiện chuẩn bị thay vì PDO.- CREATE DATABASE test_company;
4Bạn sẽ bao gồm tệp
- FLUSH PRIVILEGES;
2 trong hai tập lệnh PHP mà bạn sẽ tạo tiếp theo để chèn và truy xuất các bản ghi tương ứng.Đầu tiên, hãy tạo tập lệnh PHP
- FLUSH PRIVILEGES;
3 để chèn các bản ghi vào bảng sản phẩm:- CREATE DATABASE test_company;
5Sau đó, thêm thông tin sau vào tệp
- FLUSH PRIVILEGES;
3:Trong tệp, bạn đã bao gồm tệp
- FLUSH PRIVILEGES;
5 ở đầu. Đây là tệp đầu tiên bạn tạo để xác định các biến cơ sở dữ liệu và kết nối với cơ sở dữ liệu. Tệp cũng khởi tạo một đối tượng PDO và lưu trữ nó trong biến - FLUSH PRIVILEGES;
6.Tiếp theo, bạn đã tạo một bảng HTML và điền vào dữ liệu của sản phẩm bằng cách sử dụng câu lệnh PHP
Output
Query OK, 0 rows affected [0.01 sec]
8. Dòng Output
Query OK, 0 rows affected [0.01 sec]
9 truy vấn cơ sở dữ liệu và lưu trữ kết quả trong biến - sudo mysql -u root -p
00 dưới dạng mảng đa chiều, sau đó bạn đã hiển thị trong cột bảng HTML bằng cách sử dụng cú pháp - sudo mysql -u root -p
01.Các hình ảnh từ cột
- GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';
2 được đặt bên trong các thẻ ____10103. Bạn đã sử dụng các thuộc tính - sudo mysql -u root -p
04 và - sudo mysql -u root -p
05 để thay đổi kích thước hình ảnh thành một kích thước nhỏ hơn có thể vừa với cột bảng HTML.Để chuyển đổi dữ liệu được giữ bởi kiểu dữ liệu
- CREATE DATABASE test_company;
9 thành hình ảnh, bạn đã sử dụng hàm PHP - sudo mysql -u root -p
07 được xây dựng và cú pháp sau cho sơ đồ URI dữ liệu:- CREATE DATABASE test_company;
6Trong trường hợp này,
- sudo mysql -u root -p
08 là chuỗi được mã hóa - sudo mysql -u root -p
09 và - sudo mysql -u root -p
10 từ cột - GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';
2 là - sudo mysql -u root -p
12.Tiếp theo, thực thi tệp
- sudo mysql -u root -p
13 trong trình duyệt web bằng cách nhập địa chỉ sau:- CREATE DATABASE test_company;
7Sau khi chạy tệp
- sudo mysql -u root -p
13 trong trình duyệt của bạn, bạn sẽ thấy bảng HTML với danh sách các sản phẩm và hình ảnh liên quan.Điều này xác nhận rằng tập lệnh PHP để truy xuất hình ảnh từ MySQL đang hoạt động như mong đợi.
Sự kết luận
Trong hướng dẫn này, bạn đã sử dụng kiểu dữ liệu MySQL
- CREATE DATABASE test_company;
9 để lưu trữ và hiển thị hình ảnh với PHP trên Ubuntu 18.04. Bạn cũng đã thấy những lợi thế cơ bản của việc lưu trữ hình ảnh trong cơ sở dữ liệu trái ngược với việc lưu trữ chúng trong một hệ thống tệp. Chúng bao gồm tính di động, bảo mật và dễ dàng sao lưu. Nếu bạn đang xây dựng một ứng dụng như sinh viên Cổng thông tin hoặc cơ sở dữ liệu của nhân viên, yêu cầu thông tin và hình ảnh liên quan được lưu trữ cùng nhau, thì công nghệ này có thể được sử dụng rất nhiều cho bạn.Để biết thêm thông tin về các loại dữ liệu được hỗ trợ trong MySQL, hãy làm theo hướng dẫn kiểu dữ liệu MySQL. Nếu bạn quan tâm đến nội dung tiếp theo liên quan đến MySQL và PHP, hãy xem các hướng dẫn sau:
- Cách thực hiện phân trang trong MySQL với PHP trên Ubuntu 18.04
- Cách sử dụng tiện ích mở rộng PDO PHP để thực hiện các giao dịch MYSQL trong PHP trên Ubuntu 18.04