Hướng dẫn how to insert blob data in mysql using php - cách chèn dữ liệu blob trong mysql bằng php

Vấn đề

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','file_get_contents[$tmp_image]']";

Điều này tạo ra một chuỗi trong PHP có tên

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";
3. Quên về MySQL trong một phút, vì bạn chưa thực hiện bất kỳ truy vấn nào. Bạn chỉ đang xây dựng một chuỗi.

Phép thuật của PHP có nghĩa là bạn có thể viết một tên biến - giả sử,

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";
4 - bên trong các trích dẫn kép và biến vẫn được mở rộng một cách kỳ diệu.

Chức năng này, được gọi là "nội suy biến", không xảy ra đối với các cuộc gọi chức năng. Vì vậy, tất cả những gì bạn đang làm ở đây là viết chuỗi

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";
5 vào cơ sở dữ liệu.

Giải pháp [1]

Vì vậy, để kết hợp kết quả của việc gọi

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";
6, bạn phải nhảy ra khỏi chuỗi và làm mọi thứ một cách rõ ràng:

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";

[Bạn có thể thấy thậm chí chỉ từ cú pháp làm nổi bật cách thức hoạt động của nó.]

Giải pháp [2]

Bây giờ vấn đề bạn có là nếu dữ liệu nhị phân chứa bất kỳ

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";
7 nào, truy vấn của bạn không hợp lệ. Vì vậy, bạn nên chạy nó qua
$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";
8 để vệ sinh nó cho hoạt động truy vấn:

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . mysql_escape_string[file_get_contents[$tmp_image]] . "']";

Giải pháp [3]

Bây giờ bạn có một chuỗi thực sự lớn và cơ sở dữ liệu của bạn đang trở nên cồng kềnh.

Không muốn lưu trữ hình ảnh trong cơ sở dữ liệu, nơi bạn có thể giúp nó.

Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách xử lý dữ liệu Blob bằng Php PDO. Chúng tôi sẽ chỉ cho bạn cách chèn, cập nhật và chọn dữ liệu blob trong cơ sở dữ liệu MySQL.: in this tutorial, you will learn how to handle BLOB data using PHP PDO. We will show you how to insert, update and select BLOB data in MySQL databases.

Đôi khi, vì lý do bảo mật, bạn có thể cần lưu trữ các đối tượng dữ liệu lớn, ví dụ: hình ảnh, tệp pdf, & nbsp; và & nbsp; video, trong cơ sở dữ liệu MySQL.

MySQL cung cấp một loại Blob có thể chứa một lượng lớn dữ liệu. Blob là viết tắt của đối tượng dữ liệu lớn nhị phân. Giá trị tối đa của một đối tượng Blob được chỉ định bởi bộ nhớ có sẵn và kích thước gói giao tiếp. Bạn có thể thay đổi kích thước gói giao tiếp bằng cách sử dụng & nbsp;

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . file_get_contents[$tmp_image] . "']";
9 Biến trong MySQL và & NBSP;
$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . mysql_escape_string[file_get_contents[$tmp_image]] . "']";
0 trong cài đặt PHP.

Hãy cùng xem cách PDO PHP xử lý loại Blob trong MySQL.

Đầu tiên, chúng tôi tạo một bảng mới có tên

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . mysql_escape_string[file_get_contents[$tmp_image]] . "']";
1 trong cơ sở dữ liệu mẫu để thực hành.

Bảng

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . mysql_escape_string[file_get_contents[$tmp_image]] . "']";
1 chứa ba cột:

  • Cột ID là khóa chính, cột tự động.
  • Cột MIME lưu trữ loại MIME của tệp.
  • Cột dữ liệu có kiểu dữ liệu là blob được sử dụng để lưu trữ nội dung của tệp.

Câu lệnh bảng tạo sau đây tạo bảng

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . mysql_escape_string[file_get_contents[$tmp_image]] . "']";
1:

CREATE TABLE files [ id INT AUTO_INCREMENT PRIMARY KEY, mime VARCHAR [255] NOT NULL, data BLOB NOT NULL ];

Code language: SQL [Structured Query Language] [sql]

Thứ hai, chúng tôi xác định một lớp gọi là

$sql = "INSERT INTO ImageStore[ImageId,Image]
        VALUES['$this->image_id','" . mysql_escape_string[file_get_contents[$tmp_image]] . "']";
4 với mã sau:

Bài Viết Liên Quan

Chủ Đề