KIỂU DỮ LIỆU HÌNH ẢNH TRONG MYSQL

  -  
Đối tượng lớn binary ( BLOB ) là kiểu dữ liệu MySQL có thể lưu trữ dữ liệu binary như hình ảnh, file đa phương tiện và file PDF.

Đây là nơi xuất hiện kiểu dữ liệu MySQL BLOB . Phương pháp lập trình này loại bỏ nhu cầu tạo một hệ thống file riêng để lưu trữ hình ảnh. Lược đồ cũng tập trung hóa database , làm cho nó dễ di động và an toàn hơn vì dữ liệu được tách biệt khỏi hệ thống file . Tạo bản backup cũng liền mạch hơn vì bạn có thể tạo một file kết xuất MySQL duy nhất chứa tất cả dữ liệu .

Bạn đang xem: Kiểu dữ liệu hình ảnh trong mysql

Truy xuất dữ liệu nhanh hơn và khi tạo bản ghi, bạn có thể chắc chắn rằng các luật xác thực dữ liệu và tính toàn vẹn tham chiếu được duy trì, đặc biệt 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 BLOB để lưu trữ hình ảnh bằng PHP trên Ubuntu 18.04.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần những thứ sau:

Bước 1 - Tạo database

Bạn sẽ bắt đầu bằng cách tạo một database mẫu cho dự án của bạn . Để thực hiện việc này, hãy SSH vào server của bạn và sau đó chạy lệnh sau để đăng nhập vào server MySQL của bạn với quyền root :

sudo mysql -u root -pNhập password root của database MySQL của bạn và nhấn ENTER để tiếp tục.

Sau đó, chạy lệnh sau để tạo database . Trong hướng dẫn này, ta sẽ đặt tên là test_company :

">CREATE DATABASE test_company;Khi database được tạo, bạn sẽ thấy kết quả sau:


Output
Query OK, 1 row affected (0.01 sec) Tiếp theo, tạo account test_user trên server MySQL và nhớ thay thế PASSWORD bằng một password mạnh:

">CREATE USER "test_user"
"localhost" IDENTIFIED BY "PASSWORD";Bạn sẽ thấy kết quả sau:


Output
Query OK, 0 rows affected (0.01 sec) Để cấp cho test_user đầy đủ các quyền trên database test_company , hãy chạy:

">GRANT ALL PRIVILEGES ON test_company.* TO "test_user"
"localhost";Đảm bảo rằng bạn nhận được kết quả sau:


Output
Query OK, 0 rows affected (0.01 sec) Cuối cùng, xóa bảng quyền để MySQL reload các quyền:

">FLUSH PRIVILEGES;Đảm bảo bạn thấy kết quả sau:


Output
Query OK, 0 rows affected (0.01 sec) Bây giờ database test_company và test_user đã sẵn sàng, bạn sẽ chuyển sang tạo bảng products để 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 MySQL BLOB hoạt động.

Đăng xuất khỏi server MySQL:

">QUIT;Sau đó, đăng nhập lại bằng thông tin đăng nhập của test_user mà bạn đã tạo:

mysql -u test_user -pKhi được yêu cầu , hãy nhập password cho test_user và nhấn ENTER để tiếp tục. Tiếp theo, chuyển sang database test_company bằng lệnh như sau:

">USE test_company;Khi database test_company được chọn, MySQL sẽ hiển thị:


Output
Database changed Tiếp theo, tạo bảng products bằng lệnh:

">CREATE TABLE `products` (product_id BIGINT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(50), price DOUBLE, product_image BLOB) ENGINE = InnoDB;Lệnh này tạo một bảng có tên là products . Bảng có bốn cột:

product_id : Cột này sử dụng kiểu dữ liệu BIGINT để chứa một danh sách lớn các sản phẩm lên đến tối đa 2⁶³-1 mục. Bạn đã đánh dấu cột là PRIMARY KEY để xác định duy nhất các sản phẩm. Để MySQL xử lý việc tạo số nhận dạng mới cho các cột được chèn, bạn đã sử dụng từ khóa AUTO_INCREMENT .

product_name : Cột này chứa tên của các sản phẩm. Bạn đã sử dụng kiểu dữ liệu VARCHAR vì trường này thường sẽ xử lý chữ và số lên đến tối đa 50 ký tự — giới hạn 50 chỉ là giá trị giả định được sử dụng cho mục đích của hướng dẫn này.

price : Đối với mục đích demo , bảng products của bạn chứa cột price để 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ị động (ví dụ: 23,69, 45,36, 102,99), bạn đã sử dụng kiểu dữ liệu DOUBLE .

product_image : Cột này sử dụng kiểu dữ liệu BLOB để lưu trữ dữ liệu binary thực của hình ảnh sản phẩm.

Bạn đã sử dụng InnoDB lưu trữ ENGINE 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 products , bạn sẽ thấy kết quả sau:


Output
Query OK, 0 rows affected (0.03 sec) Đăng xuất khỏi server MySQL của bạn:

">QUIT;Bạn sẽ nhận được kết quả sau


Output
Bye Bảng products hiện đã sẵn sàng để lưu trữ một số bản ghi bao gồm hình ảnh của sản phẩm và bạn sẽ điền vào bảng này 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à phổ biến database

Trong bước này, bạn sẽ tạo một tập lệnh PHP sẽ kết nối với database MySQL mà bạn đã tạo ở 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 products .

Để tạo mã PHP, hãy mở một file mới bằng editor của bạn:

sudo nano /var/www/html/config.phpSau đó, nhập thông tin sau vào file và thay thế PASSWORD bằng password test_user mà bạn đã tạo ở Bước 1:


/var/www/html/config.php

test_company"); define("DB_USER", "test_user"); define("DB_PASSWORD", "PASSWORD"); define("DB_HOST", "localhost"); $pdo = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); Lưu và đóng file .

Trong file này, bạn đã sử dụng bốn hằng số PHP để kết nối với database MySQL mà bạn đã tạo ở Bước 1:

DB_NAME : Hằng số này giữ tên của database test_company .

Xem thêm: Thẻ H1 Là Gì ? Cách Sử Dụng Thẻ Heading Trong Seo Tối Ưu Các Headings 1 2 3 4 Quan Trọng Cho Seo

DB_USER : Biến này chứa tên user test_user .

DB_PASSWORD : Hằng số này lưu trữ PASSWORD MySQL của account test_user .

DB_HOST : Điều này đại diện cho server nơi database cư trú. Trong trường hợp này, bạn đang sử dụng server localhost .

Dòng sau trong file của bạn khởi tạo Đối tượng dữ liệu PHP (PDO) và kết nối với database MySQL:

... $pdo = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD); ... Ở cuối file , bạn đã đặt một số thuộc tính PDO:

ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION : 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.ATTR_EMULATE_PREPARES, false : Tùy chọn này tăng tính bảo mật bằng cách yêu cầu công cụ database MySQL thực hiện chuẩn bị thay vì PDO.

Bạn sẽ bao gồm file /var/www/html/config.php 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 /var/www/html/insert_products.php để chèn các bản ghi vào bảng sản phẩm:

sudo nano /var/www/html/insert_products.phpSau đó, thêm thông tin sau vào file /var/www/html/insert_products.php :


/var/www/html/insert_products.php

"VIRTUAL SERVERS", "price" => 5, "product_image" => file_get_contents("https://i.imgur.com/VEIKbp0.png") >; $products<> = < "product_name" => "MANAGED KUBERNETES", "price" => 30, "product_image" => file_get_contents("https://i.imgur.com/cCc9Gw9.png") >; $products<> = < "product_name" => "MySQL DATABASES", "price" => 15, "product_image" => file_get_contents("https://i.imgur.com/UYcHkKD.png" ) >; $sql = "INSERT INTO products(product_name, price, product_image) VALUES (:product_name, :price, :product_image)"; foreach ($products as $product) { $stmt = $pdo->prepare($sql); $stmt->execute($product); } echo "Records inserted successfully"; Lưu và đóng file .

Trong file , bạn đã bao gồm file config.php ở trên cùng. Đây là file đầu tiên bạn tạo để xác định các biến database và kết nối với database . Tệp cũng khởi tạo một đối tượng PDO và lưu trữ nó trong một biến $pdo .

Tiếp theo, bạn đã tạo một mảng dữ liệu của các sản phẩm để chèn vào database . Ngoài product_name và price , được chuẩn bị dưới dạng chuỗi và giá trị số tương ứng, tập lệnh sử dụng hàm file_get_contents được tích hợp sẵn của PHP để đọc hình ảnh từ nguồn bên ngoài và chuyển chúng dưới dạng chuỗi vào cột product_image .

Tiếp theo, bạn đã chuẩn bị một câu lệnh SQL và sử dụng câu lệnh PHP foreach{...} để chèn từng sản phẩm vào database .

Để thực thi file /var/www/html/insert_products.php , hãy chạy nó trong cửa sổ trình duyệt của bạn bằng cách sử dụng URL sau. Hãy nhớ thay thế your-server-IP công cộng của server của bạn:

http://your-server-IP/insert_products.php Sau khi thực thi file , bạn sẽ thấy thông báo thành công trong trình duyệt xác nhận các bản ghi đã được chèn vào database .

*

Bạn đã chèn thành công ba bản ghi có chứa hình ảnh sản phẩm vào bảng products . Trong bước tiếp theo, bạn sẽ tạo một tập lệnh PHP để lấy các bản ghi này và hiển thị chúng trong trình duyệt của bạn.

Xem thêm: Xem Phim Nhanh, Phim Vietsub, Thuyết Minh Chất Lượng Hd, Phim Nhanh

Bước 3 - Hiển thị thông tin sản phẩm từ database MySQL

Với thông tin và hình ảnh của sản phẩm trong database , bây giờ bạn sẽ viết mã một tập lệnh PHP khác để truy vấn và hiển thị thông tin của sản phẩm trong bảng HTML trên trình duyệt của bạn.

Để tạo file , hãy nhập như sau:

sudo nano /var/www/html/display_products.phpSau đó, nhập thông tin sau vào file :


Using BLOB and MySQL prepare($sql); $stmt->execute(); ?> Products Database Product Id Product Name Price Product Image fetch(PDO::FETCH_ASSOC)) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } ?>
" . $row<"product_id"> . "" . $row<"product_name"> . "" . $row<"price"> . "" . ") . "" width = "50px" height = "50px"/>" . "