Kiểu Dữ Liệu Hình Ảnh Trong Mysql

BLOB là đẳng cấp tài liệu MySQL có thể tàng trữ dữ liệu binary như hình hình ảnh, file nhiều phương tiện đi lại với file PDF.

Đây là chỗ mở ra đẳng cấp tài liệu MySquốc lộ BLOB . Phương thơm pháp lập trình sẵn này loại bỏ nhu cầu chế tác một hệ thống tệp tin riêng biệt để lưu trữ hình ảnh. Lược vật cũng tập trung hóa database , tạo nên nó dễ dàng di động cầm tay với an ninh hơn vì dữ liệu được bóc biệt ngoài khối hệ thống file . Tạo bản backup cũng ngay tắp lự mạch rộng do bạn cũng có thể tạo một file kết xuất MySQL nhất chứa tất cả tài liệu .

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

Truy xuất tài liệu nhanh khô rộng cùng Khi sản xuất phiên bản ghi, chúng ta có thể chắc hẳn rằng rằng các-cơ chế đảm bảo dữ liệu với tính toàn vẹn tyêu thích chiếu được gia hạn, đặc biệt lúc thực hiện các thanh toán giao dịch MySQL .

Trong chỉ dẫn này, bạn sẽ thực hiện mẫu mã dữ liệu MySquốc lộ BLOB nhằm lưu trữ hình ảnh bằng PHP. bên trên Ubuntu 18.04.

Yêu cầu

Để làm theo chỉ dẫn này, bạn phải các yếu tố sau:

Bước 1 - Tạo database

Quý Khách đã ban đầu bằng phương pháp chế tác một database mẫu mang lại dự án công trình của chúng ta . Để thực hiện bài toán này, hãy SSH vào server cùng kế tiếp chạy lệnh sau để đăng nhập vào hệ thống MySQL của chúng ta cùng với quyền root :

subởi vì mysql -u root -pNhập password root của database MySquốc lộ của người sử dụng và dấn ENTER để thường xuyên.

Sau kia, chạy lệnh sau nhằm chế tác database . Trong chỉ dẫn này, ta đang đặt tên là test_company :

">CREATE DATABASE test_company;lúc database được chế tác, bạn sẽ thấy hiệu quả sau:


Output
Query OK, 1 row affected (0.01 sec) Tiếp theo, chế tạo ra trương mục test_user bên trên server MySquốc lộ cùng lưu giữ thay thế PASSWORD bằng một password mạnh:

">CREATE USER "test_user"
"localhost" IDENTIFIED BY "PASSWORD";quý khách vẫn thấy hiệu quả sau:


Output
Query OK, 0 rows affected (0.01 sec) Để cung cấp mang lại test_user không thiếu thốn 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 bạn nhận thấy hiệu quả sau:


Output
Query OK, 0 rows affected (0.01 sec) Cuối cùng, xóa bảng quyền nhằm MySquốc lộ reload những 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ẽ sẵn sàng chuẩn bị, bạn sẽ đưa quý phái tạo bảng products để lưu trữ những thành phầm mẫu mã. quý khách hàng đã sử dụng bảng này sau đó để cnhát và truy hỏi xuất những phiên bản ghi để minh chứng bí quyết MySquốc lộ BLOB vận động.

Đăng xuất ngoài VPS MySQL:

">QUIT;Sau kia, đăng nhập lại bằng biết tin singin của test_user cơ mà bạn sẽ tạo:

mysql -u test_user -plúc được đề xuất , hãy nhập password mang đến test_user cùng nhấn ENTER để liên tiếp. Tiếp theo, đưa thanh lịch database test_company bằng lệnh như sau:

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


Output
Database changed Tiếp theo, tạo thành bảng products bởi 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 thành một bảng có tên là products . Bảng tất cả bốn cột:

product_id : Cột này sử dụng hình dáng tài liệu BIGINT để cất một danh sách lớn các sản phẩm lên đến mức buổi tối nhiều 2⁶³-1 mục. Quý khách hàng vẫn ghi lại cột là PRIMARY KEY nhằm xác minh tốt nhất các thành phầm. Để MySquốc lộ cách xử lý việc sản xuất số dìm dạng bắt đầu cho những cột được chèn, các bạn đã thực hiện trường đoản cú khóa AUTO_INCREMENT .

product_name : Cột này chứa tên của những sản phẩm. Quý Khách sẽ áp dụng kiểu dáng tài liệu VARCHAR do trường này hay đã xử trí chữ cùng số lên tới mức tối đa 50 ký từ bỏ — số lượng giới hạn 50 chỉ cần giá trị mang định được áp dụng mang lại mục đích của lí giải này.

price : Đối với mục đích thử nghiệm , bảng products của công ty chứa cột price nhằm lưu trữ giá nhỏ lẻ của thành phầm. Vì một số trong những sản phẩm có thể có giá trị hễ (ví dụ: 23,69, 45,36, 102,99), chúng ta đã thực hiện vẻ bên ngoài dữ liệu DOUBLE .

product_image : Cột này áp dụng dạng hình dữ liệu BLOB để tàng trữ dữ liệu binary thực của hình hình họa thành phầm.

Quý khách hàng đã áp dụng InnoDB tàng trữ ENGINE cho bảng nhằm hỗ trợ một loạt những bản lĩnh bao gồm các giao dịch thanh toán MySQL . Sau lúc thực hiện vấn đề này để tạo nên bảng products , bạn sẽ thấy hiệu quả sau:


Output
Query OK, 0 rows affected (0.03 sec) Đăng xuất khỏi hệ thống MySquốc lộ của bạn:

">QUIT;quý khách hàng sẽ nhận ra công dụng sau


Output
Bye Bảng products hiện sẽ chuẩn bị nhằm lưu trữ một số bản ghi bao hàm hình hình ảnh của thành phầm cùng bạn sẽ điền vào bảng này với một trong những thành phầm trong bước tiếp theo.

Bước 2 - Tạo tập lệnh PHP để liên kết database

Trong bước này, bạn sẽ sinh sản một tập lệnh PHP vẫn kết nối cùng với database MySquốc lộ nhưng chúng ta đang tạo ở Cách 1. Tập lệnh sẽ sẵn sàng cha thành phầm chủng loại với cyếu nó vào bảng products .

Để chế tác mã PHP, hãy mtại một file new bởi editor:

subởi nano /var/www/html/config.phpSau đó, nhập đọc tin sau vào tệp tin với thay thế sửa chữa PASSWORD bởi password test_user nhưng bạn đang sản xuất ở Cách 1:


/var/www/html/config.php

test_company"); define("DB_USER", "test_user"); define("DB_PASSWORD", "PASSWORD"); define("DB_HOST", "localhost"); $pbởi = 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 file .

Trong file này, các bạn sẽ áp dụng bốn hằng số PHP nhằm kết nối cùng với database MySquốc lộ mà lại chúng ta sẽ tạo nên ở Bước 1:

DB_NAME : Hằng số này giữ lại thương hiệu của database test_company .

Xem thêm: Nơi Bán Cdma Iphone Giá Rẻ, Uy Tín, Chất Lượng Nhất, Điện Thoại Iphone 4S Cũ Giá Gốc, Với Nhiều Ưu Đãi

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

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

DB_HOST : VPS khu vực đựng database . Trong ngôi trường hòa hợp này, ai đang thực hiện VPS localhost .

Dòng sau vào file khởi tạo Đối tượng tài liệu PHPhường (PDO) và liên kết cùng với database MySQL:

... $pvì = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD); ... Ở cuối tệp tin , bạn đang đặt một số trong những thuộc tính PDO:

ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION : Thuộc tính này chỉ dẫn PDO xuất một nước ngoài lệ hoàn toàn có thể được ghi lại cho mục tiêu 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 trải nghiệm hình thức database MySQL thực hiện sẵn sàng ráng vị PDO.

Sẽ bao gồm tệp tin /var/www/html/config.php trong hai tập lệnh PHPhường mà lại bạn sẽ tạo nên tiếp theo nhằm ckém với truy tìm xuất các bạn dạng ghi tương ứng.

Trước hết, hãy chế tạo ra tập lệnh PHP /var/www/html/insert_products.php để chèn những bạn dạng ghi vào bảng sản phẩm:

subởi nano /var/www/html/insert_products.phpSau kia, thêm công bố sau vào tệp tin /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" => "MySquốc lộ 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); eđến "Records inserted successfully"; Lưu file .

Trong tệp tin , các bạn vẫn bao hàm tệp tin config.php sinh sống bên trên cùng. Đây là tệp tin đầu tiên bạn tạo để xác định các biến chuyển database và liên kết với database . Tệp cũng khởi chế tạo một đối tượng người dùng PDO cùng tàng trữ nó vào một biến chuyển $pdo .

Tiếp theo, các bạn vẫn tạo thành một mảng tài liệu của những sản phẩm để ckém vào database . Ngoài product_name với price , được chuẩn bị bên dưới dạng chuỗi và cực hiếm số tương ứng, tập lệnh áp dụng hàm file_get_contents được tích phù hợp sẵn của PHP nhằm hiểu hình ảnh từ bỏ mối cung cấp phía bên ngoài và đưa bọn chúng dưới dạng chuỗi vào cột product_image .

Tiếp theo, bạn đã sẵn sàng một câu lệnh SQL cùng thực hiện câu lệnh PHPhường foreach... nhằm ckém từng sản phẩm vào database .

Để tiến hành tệp tin /var/www/html/insert_products.php , hãy chạy nó vào cửa sổ trình coi xét của chúng ta bằng phương pháp áp dụng URL sau. Hãy lưu giữ thay thế sửa chữa your-server-IPhường. nơi công cộng của server:

http://your-server-IP/insert_products.php Sau khi thực hiện tệp tin , các bạn sẽ thấy thông báo thành công xuất sắc vào trình chăm chút xác thực các phiên bản ghi đã có được cnhát vào database .

*

Quý khách hàng đang cnhát thành công xuất sắc cha bản ghi gồm đựng hình hình họa thành phầm vào bảng products . Trong bước tiếp theo, các bạn sẽ sinh sản một tập lệnh PHPhường để lấy các bạn dạng ghi này với hiển thị chúng vào trình chăm bẵm của bạn.

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

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

Để chế tạo tệp tin , hãy nhập nhỏng sau:

suvì chưng nano /var/www/html/display_products.phpSau đó, nhập thông báo sau vào file :


Using BLOB and MySquốc lộ prepare($sql); $stmt->execute(); ?> Products Database Product Id Product Name Price Product Image fetch(PDO::FETCH_ASSOC)) emang lại ""; echo ""; emang đến ""; echo ""; echo ""; emang lại ""; ?>
" . $row<"product_id"> . "" . $row<"product_name"> . "" . $row<"price"> . "" . ") . "" width = "50px" height = "50px"/>" . "