Kiểu Dữ Liệu Hình Ảnh Trong Mysql
Đây là nơi xuất hiện thêm kiểu tài liệu MySQL BLOB . Phương pháp lập trình này vứt bỏ nhu mong tạo một hệ thống file riêng để lưu trữ hình ảnh. Lược thứ cũng tập trung hóa database , tạo cho nó dễ di động và bình yên hơn vì tài liệu được bóc biệt khỏi khối hệ thống file . Tạo bạn dạng backup cũng ngay tức khắc mạch hơn vì chúng ta cũng có thể tạo một file kết xuất MySQL duy nhất chứa toàn bộ 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, chúng ta có thể chắc chắn rằng các-luật xác thực dữ liệu và tính trọn vẹn tham chiếu được duy trì, quan trọng đặc biệt khi sử dụng những giao dịch MySQL .
Trong hướng dẫn này, các bạn sẽ sử dụng kiểu tài liệu MySQL BLOB để lưu trữ hình ảnh bằng PHP bên trên Ubuntu 18.04.
Yêu cầu
Để tuân theo hướng dẫn này, chúng ta cần những thành phần sau:
Bước 1 - tạo database
Bạn sẽ bước đầu bằng giải pháp tạo một database mẫu đến dự án của công ty . Để thực hiện việc này, hãy SSH vào server và sau đó chạy lệnh sau để đăng nhập vào vps MySQL của người sử dụng với quyền root :
sudo mysql -u root -pNhập password root của database MySQL của doanh nghiệp và dấn ENTER để tiếp tục.
Sau đó, chạy lệnh sau để tạo ra database . Trong gợi ý này, ta sẽ đặt tên là test_company :
">CREATE DATABASE test_company;Khi database được tạo, bạn sẽ thấy công dụng sau:
Output
Query OK, 1 row affected (0.01 sec) Tiếp theo, tạo tài khoản test_user trên vps MySQL và nhớ thay thế sửa chữa PASSWORD bởi một password mạnh:
">CREATE USER "test_user"
"localhost" IDENTIFIED BY "PASSWORD";Bạn đang thấy tác dụng sau:
Output
Query OK, 0 rows affected (0.01 sec) Để cung cấp cho test_user không thiếu các quyền bên trên database test_company , hãy chạy:
">GRANT ALL PRIVILEGES ON test_company.* to lớn "test_user"
"localhost";Đảm bảo bạn nhận được công dụng sau:
Output
Query OK, 0 rows affected (0.01 sec) Cuối cùng, 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 công dụng sau:
Output
Query OK, 0 rows affected (0.01 sec) hiện thời database test_company và test_user vẫn sẵn sàng, các bạn sẽ chuyển sang tạo thành bảng products để lưu trữ các thành phầm mẫu. Các bạn sẽ sử dụng bảng này tiếp nối để chèn và truy xuất các phiên bản ghi để chứng minh cách MySQL BLOB hoạt động.
Đăng xuất khỏi hệ thống MySQL:
">QUIT;Sau đó, singin lại bằng tin tức đăng nhập của test_user mà bạn đã tạo:
mysql -u test_user -pKhi được yêu mong , hãy nhập password cho test_user với nhấn ENTER để tiếp tục. Tiếp theo, đưa sang database test_company bởi lệnh như sau:
">USE test_company;Khi database test_company được chọn, MySQL đang hiển thị:
Output
Database changed Tiếp theo, tạo ra 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 chế tạo một bảng có tên là products . Bảng bao gồm bốn cột:
product_id : Cột này áp dụng kiểu tài liệu BIGINT để cất một list lớn các sản phẩm lên tới tối nhiều 2⁶³-1 mục. Chúng ta đã lưu lại cột là PRIMARY KEY để khẳng định duy nhất những sản phẩm. Để MySQL xử lý việc tạo số nhận dạng mới cho những cột được chèn, các bạn đã áp dụng từ khóa AUTO_INCREMENT .
product_name : Cột này đựng tên của các sản phẩm. Chúng ta đã sử dụng kiểu tài liệu VARCHAR vì trường này hay sẽ cách xử trí chữ và số lên tới mức tối đa 50 ký kết tự — số lượng giới hạn 50 chỉ cần giá trị trả định được thực hiện cho mục tiêu của lý giải này.
price : Đối với mục đích demo , bảng products của người sử dụng chứa cột price để lưu trữ giá nhỏ lẻ của sản phẩm. Vì một vài sản phẩm rất có thể có giá bán trị hễ (ví dụ: 23,69, 45,36, 102,99), chúng ta đã thực hiện kiểu tài liệu DOUBLE .
product_image : Cột này áp dụng kiểu tài liệu BLOB để tàng trữ dữ liệu binary thực của hình hình ảnh sản phẩm.
Bạn đã sử dụng InnoDB lưu trữ ENGINE mang đến bảng để cung ứng một loạt những tính năng bao hàm các giao dịch MySQL . Sau thời điểm thực hiện điều này để tạo ra 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 khỏi vps MySQL của bạn:
">QUIT;Bạn đã nhận được công dụng sau
Output
Bye Bảng products hiện nay đã sẵn sàng chuẩn bị để lưu trữ một số bạn dạng ghi bao hàm hình hình ảnh của thành phầm và 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 trong bước tiếp theo.
Bước 2 - chế tác tập lệnh PHP để liên kết 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 đã chế tạo ra ở cách 1. Tập lệnh sẽ sẵn sàng ba sản phẩm mẫu với chèn chúng nó vào bảng products .
Để chế tạo mã PHP, hãy mở một tệp tin mới bởi editor:
sudo nano /var/www/html/config.phpSau đó, nhập thông tin sau vào tệp tin và thay thế PASSWORD bằng password test_user mà các bạn đã chế tạo ra ở cách 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 tệp tin .
Trong file này, bạn đã áp dụng bốn hằng số PHP để liên kết với database MySQL mà chúng ta đã sinh sản ở bước 1:
DB_NAME : Hằng số này giữ lại tên của database test_company .
Xem thêm: Công Việc Của Nhân Viên Host Là Nghề Gì, Nghĩa Của Từ Host, Nghề Khách Sạn
DB_USER : vươn lên là này đựng tên user test_user .
DB_PASSWORD : Hằng số này tàng trữ PASSWORD MySQL của trương mục test_user .
DB_HOST : server nơi đựng database . Vào trường phù hợp này, nhiều người đang sử dụng vps localhost .
Dòng sau trong tệp tin khởi tạo Đối tượng dữ liệu PHP (PDO) và liên kết với database MySQL:
... $pdo = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD); ... Ở cuối tệp tin , các bạn đã đặt một trong những thuộc tính PDO:
ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION : ở trong tính này hướng dẫn PDO xuất một 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 lựa chọn này tăng tính bảo mật bằng cách yêu cầu pháp luật database MySQL thực hiện sẵn sàng thay do PDO.Sẽ bao hàm file /var/www/html/config.php trong nhị tập lệnh PHP mà các bạn sẽ tạo tiếp sau để chèn cùng truy xuất các bạn dạng ghi tương ứng.
Đầu tiên, hãy tạo tập lệnh PHP /var/www/html/insert_products.php nhằm 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 tin tức 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" => "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 file .
Trong tệp tin , bạn đã bao hàm file config.php sinh hoạt trên cùng. Đây là file thứ nhất bạn tạo thành để xác định các biến database và kết nối với database . Tệp cũng khởi sinh sản một đối tượng người dùng PDO và tàng trữ nó trong một vươn lên là $pdo .
Tiếp theo, chúng ta đã chế tác một mảng tài liệu của các sản phẩm để chèn vào database . Kế bên product_name với price , được chuẩn bị dưới dạng chuỗi và quý hiếm số tương ứng, tập lệnh sử dụng hàm file_get_contents được tích đúng theo sẵn của PHP để đọc hình hình ảnh từ nguồn phía bên ngoài và chuyển bọn chúng dưới dạng chuỗi vào cột product_image .
Tiếp theo, các bạn đã chuẩn bị một câu lệnh SQL và áp dụng câu lệnh PHP foreach... Nhằm 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 hành lang cửa số trình duyệt của bạn bằng phương pháp sử dụng URL sau. Hãy nhớ thay thế your-server-IP nơi công cộng của server:
http://your-server-IP/insert_products.php sau khoản thời gian thực thi tệp tin , các bạn sẽ thấy thông tin thành công vào trình duyệt xác thực các bạn dạng ghi đã có được chèn vào database .

Bạn sẽ chèn thành công ba phiên bản ghi có chứa hình ảnh sản phẩm vào bảng products . Trong cách tiếp theo, bạn sẽ tạo một tập lệnh PHP để mang các phiên bản ghi này với hiển thị bọn chúng trong trình để mắt tới của bạn.
Bước 3 - Hiển thị thông tin thành phầm từ database MySQL
Với tin tức 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ới hiển thị tin tức của thành phầm trong bảng HTML bên trên trình để mắt của bạn.
Để chế tạo ra file , hãy nhập như sau:
sudo nano /var/www/html/display_products.phpSau đó, nhập thông tin sau vào tệp tin :
Using BLOB & MySQL prepare($sql); $stmt->execute(); ?>
" . $row<"product_id"> . " | "; echo "" . $row<"product_name"> . " | "; echo "" . $row<"price"> . " | "; echo "" . " | "; echo "