Kiểu dữ liệu hình ảnh trong mysql

     
Đối tượng bự binary ( BLOB ) là đẳng cấp tài liệu MySquốc lộ hoàn toàn có thể lưu trữ dữ liệu binary như hình ảnh, file nhiều phương tiện đi lại cùng tệp tin PDF.

Đây là chỗ mở ra hình trạng tài liệu MySQL BLOB . Pmùi hương pháp lập trình này sa thải nhu cầu tạo một hệ thống tệp tin riêng rẽ để lưu trữ hình ảnh. Lược đồ dùng cũng triệu tập hóa database , tạo nên nó dễ cầm tay cùng an toàn hơn vày tài liệu được bóc tách biệt khỏi hệ thống tệp tin . Tạo bản backup cũng ngay tức khắc mạch rộng bởi vì chúng ta có thể sản xuất một tệp tin kết xuất MySQL tốt nhất cất tất cả dữ liệu .

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

Truy xuất tài liệu nhanh rộng cùng Lúc sinh sản bạn dạng ghi, chúng ta có thể chắc chắn rằng các phép tắc xác xắn tài liệu cùng tính toàn diện tham mê chiếu được gia hạn, đặc trưng khi áp dụng các thanh toán giao dịch MySquốc lộ .

Trong lí giải này, các bạn sẽ sử dụng hình dáng tài liệu MySQL BLOB nhằm lưu trữ hình hình ảnh bằng PHP. trên Ubuntu 18.04.

Yêu cầu

Để tuân theo trả lời này, chúng ta cần những sản phẩm sau:

Cách 1 - Tạo database

Quý Khách đã bước đầu bằng phương pháp tạo nên một database mẫu mã đến dự án công trình của người sử dụng . Để tiến hành việc này, hãy SSH vào server của người sử dụng cùng kế tiếp chạy lệnh sau để đăng nhtràn vào server MySquốc lộ của bạn với quyền root :

suvày mysql -u root -pNhập password root của database MySQL của chúng ta cùng dìm ENTER nhằm tiếp tục.

Sau đó, chạy lệnh sau để chế tạo ra database . Trong chỉ dẫn này, ta vẫn khắc tên là test_company :

">CREATE DATABASE test_company;khi database được tạo thành, bạn sẽ thấy hiệu quả sau:


Output
Query OK, 1 row affected (0.01 sec) Tiếp theo, chế tạo tài khoản test_user bên trên VPS MySquốc lộ với nhớ thay thế sửa chữa PASSWORD bằng một password mạnh:

">CREATE USER "test_user"
"localhost" IDENTIFIED BY "PASSWORD";Quý Khách đang thấy công dụng sau:


Output
Query OK, 0 rows affected (0.01 sec) Để cung cấp mang đến test_user vừa đủ các quyền bên trên database test_company , hãy chạy:

">GRANT ALL PRIVILEGES ON test_company.* TO "test_user"
"localhost";Đảm nói rằng chúng ta nhận được tác dụng sau:


Output
Query OK, 0 rows affected (0.01 sec) Cuối thuộc, xóa bảng quyền nhằm MySQL reload những quyền:

">FLUSH PRIVILEGES;Đảm bảo các bạn thấy tác dụng sau:


Output
Query OK, 0 rows affected (0.01 sec) Bây giờ đồng hồ database test_company cùng test_user vẫn sẵn sàng, bạn sẽ gửi lịch sự sinh sản bảng products để lưu trữ các thành phầm mẫu. Bạn đã áp dụng bảng này tiếp nối nhằm cnhát và tầm nã xuất các bạn dạng ghi nhằm chứng minh phương pháp MySquốc lộ BLOB vận động.

Đăng xuất ngoài hệ thống MySQL:

">QUIT;Sau đó, đăng nhập lại bởi ban bố singin của test_user mà lại các bạn đang tạo:

mysql -u test_user -plúc được kinh nghiệm , hãy nhập password cho test_user và nhấn ENTER nhằm tiếp tục. Tiếp theo, gửi lịch sự database test_company bởi lệnh như sau:

">USE test_company;Lúc database test_company được lựa chọn, MySQL đang hiển thị:


Output
Database changed Tiếp theo, chế tạo ra 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 sinh sản một bảng có tên là products . Bảng có tư cột:

product_id : Cột này áp dụng loại dữ liệu BIGINT để chứa một list lớn các thành phầm lên tới mức tối nhiều 2⁶³-1 mục. quý khách đang đánh dấu cột là PRIMARY KEY nhằm xác minh độc nhất vô nhị những thành phầm. Để MySQL xử lý vấn đề tạo ra số thừa nhận dạng mới cho những cột được ckém, chúng ta đang thực hiện trường đoản cú khóa AUTO_INCREMENT .

product_name : Cột này đựng thương hiệu của các thành phầm. Quý khách hàng sẽ thực hiện mẫu mã dữ liệu VARCHAR vì trường này hay đã cách xử trí chữ cùng số lên đến buổi tối đa 50 cam kết trường đoản cú — giới hạn 50 chỉ cần quý hiếm trả định được sử dụng đến mục đích của trả lời này.

price : Đối với mục đích chạy thử , bảng products của người tiêu dùng đựng cột price nhằm tàng trữ giá chỉ nhỏ lẻ của thành phầm. Vì một vài thành phầm rất có thể có mức giá trị đụng (ví dụ: 23,69, 45,36, 102,99), chúng ta đang thực hiện mẫu mã tài liệu DOUBLE .

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

Quý Khách vẫn sử dụng InnoDB tàng trữ ENGINE cho bảng để cung cấp hàng loạt những khả năng bao gồm các giao dịch MySquốc lộ . Sau lúc triển khai vấn đề đó nhằm tạo bảng products , các bạn sẽ thấy kết quả sau:


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

">QUIT;Quý Khách đã nhận thấy hiệu quả sau


Output
Bye Bảng products hiện tại đã sẵn sàng để lưu trữ một trong những bản ghi bao gồm hình hình họa của sản phẩm cùng các bạn sẽ điền vào bảng này với một số trong những sản phẩm vào bước tiếp sau.

Cách 2 - Tạo tập lệnh PHP.. nhằm kết nối cùng thịnh hành database

Trong bước này, bạn sẽ chế tạo một tập lệnh PHPhường. sẽ kết nối cùng với database MySquốc lộ cơ mà các bạn sẽ sinh sản sinh hoạt Bước 1. Tập lệnh vẫn sẵn sàng cha thành phầm mẫu cùng cnhát chúng nó vào bảng products .

Để tạo ra mã PHP., hãy mở một tệp tin mới bởi editor của bạn:

suvì chưng nano /var/www/html/config.phpSau kia, nhập thông báo sau vào tệp tin với sửa chữa PASSWORD bằng password test_user mà các bạn sẽ chế tạo sinh hoạt Bước 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 với đóng file .

Trong file này, bạn vẫn áp dụng tư hằng số PHP nhằm kết nối với database MySQL mà lại bạn đang tạo ra làm việc Cách 1:

DB_NAME : Hằng số này duy trì thương hiệu của database test_company .

Xem thêm:

DB_USER : Biến này cất tên user test_user .

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

DB_HOST : Vấn đề này thay mặt đến hệ thống vị trí database trú ngụ. Trong ngôi trường đúng theo này, nhiều người đang thực hiện server localhost .

Dòng sau trong file của khách hàng khởi sản xuất Đối tượng dữ liệu PHPhường. (PDO) cùng kết nối cùng với database MySQL:

... $pbởi = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD); ... Tại cuối tệp tin , chúng ta đã đặt một số trong những ở trong tính PDO:

ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION : Thuộc tính này gợi ý PDO nỉm một ngoại lệ rất có thể được lưu lại mang đến mục tiêu gỡ lỗi.ATTR_EMULATE_PREPARES, false : Tùy lựa chọn này tăng tính bảo mật bằng cách đề xuất hiện tượng database MySquốc lộ tiến hành chuẩn bị vắt bởi vì PDO.

Quý khách hàng sẽ bao gồm file /var/www/html/config.php vào nhì tập lệnh PHP.. cơ mà bạn sẽ sinh sản tiếp theo sau để ckém với truy tìm xuất những bản ghi tương ứng.

Trước tiên, hãy chế tác tập lệnh PHPhường /var/www/html/insert_products.php nhằm cnhát các bạn dạng ghi vào bảng sản phẩm:

suvì nano /var/www/html/insert_products.phpSau đó, thêm biết 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" => "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); echo "Records inserted successfully"; Lưu với đóng tệp tin .

Trong tệp tin , bạn đã bao gồm file config.php ngơi nghỉ bên trên cùng. Đây là file trước tiên chúng ta tạo thành nhằm khẳng định những phát triển thành database và liên kết cùng với database . Tệp cũng khởi chế tác một đối tượng người tiêu dùng PDO và tàng trữ nó trong một trở nên $pdo .

Tiếp theo, chúng ta đang tạo ra một mảng tài liệu của các sản phẩm nhằm chèn vào database . Ngoài product_name cùng price , được sẵn sàng dưới dạng chuỗi và quý hiếm số tương ứng, tập lệnh thực hiện hàm file_get_contents được tích vừa lòng sẵn của PHP. để đọc hình hình ảnh trường đoản cú nguồn bên phía ngoài và đưa bọn chúng bên dưới dạng chuỗi vào cột product_image .

Tiếp theo, các bạn đang sẵn sàng một câu lệnh SQL với áp dụng câu lệnh PHP foreach... nhằm chèn từng thành phầm vào database .

Để triển khai file /var/www/html/insert_products.php , hãy chạy nó trong cửa sổ trình chăm chú của công ty bằng cách sử dụng URL sau. Hãy ghi nhớ thay thế your-server-IP chỗ đông người của VPS của bạn:

http://your-server-IP/insert_products.php Sau khi triển khai file , các bạn sẽ thấy thông báo thành công trong trình chăm nom xác thực các bản ghi đã được cyếu vào database .

*

Quý khách hàng vẫn chèn thành công tía phiên bản ghi có cất hình hình ảnh sản phẩm vào bảng products . Trong bước tiếp theo, bạn sẽ chế tạo một tập lệnh PHP.. để lấy những bạn dạng ghi này với hiển thị chúng trong trình duyệt của doanh nghiệp.

Bước 3 - Hiển thị công bố thành phầm từ database MySQL

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

Để chế tác tệp tin , hãy nhập như sau:

suvì nano /var/www/html/display_products.phpSau đó, nhập đọc tin 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 đến ""; eđến ""; eđến ""; eđến ""; eđến ""; eđến ""; ?>
" . $row<"product_id"> . "" . $row<"product_name"> . "" . $row<"price"> . "" . ") . "" width = "50px" height = "50px"/>" . "


Chuyên mục: Domain Hosting