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.

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

Đô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:

/** * PHP MySQL BLOB Demo */ class BlobDemo { const DB_HOST = 'localhost'; const DB_NAME = 'classicmodels'; const DB_USER = 'root'; const DB_PASSWORD = ''; /** * Open the database connection */ public function __construct() { // open database connection $conStr = sprintf("mysql:host=%s;dbname=%s;charset=utf8", self::DB_HOST, self::DB_NAME); try { $this->pdo = new PDO($conStr, self::DB_USER, self::DB_PASSWORD); //for prior PHP 5.3.6 //$conn->exec("set names utf8"); } catch (PDOException $e) { echo $e->getMessage(); } } /** * close the database connection */ public function __destruct() { // close the database connection $this->pdo = null; } }

Code language: PHP (php)

Trong phương thức

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
5, chúng tôi mở kết nối cơ sở dữ liệu đến cơ sở dữ liệu MySQL và trong & NBSP; Phương thức
$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
6, chúng tôi đóng kết nối.

Chèn dữ liệu blob vào cơ sở dữ liệu

PHP PDO cung cấp một cách thuận tiện để làm việc với dữ liệu blob bằng cách sử dụng các luồng và chuẩn bị các câu lệnh. Để chèn nội dung của một tệp vào cột Blob, bạn làm theo các bước bên dưới:

  • Đầu tiên, mở tệp để đọc ở chế độ nhị phân.
  • Thứ hai, xây dựng một tuyên bố chèn.
  • Thứ ba, liên kết xử lý tệp với câu lệnh đã chuẩn bị bằng phương thức & nbsp; ____ 27 27 và gọi & nbsp; Phương thức
    $sql = "INSERT INTO ImageStore(ImageId,Image)
            VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
    
    8 để thực hiện truy vấn.

Xem phần sau & nbsp;

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
9 Phương pháp:

/** * insert blob into the files table * @param string $filePath * @param string $mime mimetype * @return bool */ public function insertBlob($filePath, $mime) { $blob = fopen($filePath, 'rb'); $sql = "INSERT INTO files(mime,data) VALUES(:mime,:data)"; $stmt = $this->pdo->prepare($sql); $stmt->bindParam(':mime', $mime); $stmt->bindParam(':data', $blob, PDO::PARAM_LOB); return $stmt->execute(); }

Code language: PHP (php)

Lưu ý rằng & nbsp; ________ 30 hướng dẫn PDO ánh xạ dữ liệu dưới dạng luồng.

Cập nhật cột Blob hiện có

Để cập nhật cột Blob, bạn sử dụng cùng một kỹ thuật như được mô tả trong việc chèn dữ liệu vào cột Blob. Xem phần sau & nbsp; Phương pháp

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)
1:

/** * update the files table with the new blob from the file specified * by the filepath * @param int $id * @param string $filePath * @param string $mime * @return bool */ function updateBlob($id, $filePath, $mime) { $blob = fopen($filePath, 'rb'); $sql = "UPDATE files SET mime = :mime, data = :data WHERE id = :id;"; $stmt = $this->pdo->prepare($sql); $stmt->bindParam(':mime', $mime); $stmt->bindParam(':data', $blob, PDO::PARAM_LOB); $stmt->bindParam(':id', $id); return $stmt->execute(); }

Code language: PHP (php)

Dữ liệu truy vấn từ cột Blob

Các bước sau đây mô tả cách chọn dữ liệu từ cột Blob:

  • Đầu tiên, xây dựng một câu lệnh Chọn.
  • Thứ hai, liên kết tham số tương ứng bằng & nbsp;

    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)
    2 Phương pháp của đối tượng

    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)
    3.
  • Thứ ba, thực hiện tuyên bố.

Xem phần sau & nbsp;

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)
4 Phương pháp:

/** * select data from the the files * @param int $id * @return array contains mime type and BLOB data */ public function selectBlob($id) { $sql = "SELECT mime, data FROM files WHERE id = :id;"; $stmt = $this->pdo->prepare($sql); $stmt->execute(array(":id" => $id)); $stmt->bindColumn(1, $mime); $stmt->bindColumn(2, $data, PDO::PARAM_LOB); $stmt->fetch(PDO::FETCH_BOUND); return array("mime" => $mime, "data" => $data); }

Code language: PHP (php)

Php mysql blob ví dụ

Trong các ví dụ sau, chúng tôi sẽ sử dụng lớp

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
4 để lưu hình ảnh GIF và tệp PDF vào cột Blob của bảng
$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
1.

Php mysql blob với các tệp hình ảnh

Đầu tiên, chúng tôi chèn dữ liệu nhị phân từ tệp

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)
7 vào cột BLOB của bảng
$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
1 như sau:

$blobObj = new BlobDemo(); // test insert gif image $blobObj->insertBlob('images/php-mysql-blob.gif',"image/gif");

Code language: PHP (php)
then, chúng ta có thể chọn dữ liệu Blob và hiển thị nó dưới dạng hình ảnh GIF:
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

Then, we can select the BLOB data and display it as a GIF image:

$a = $blobObj->selectBlob(1); header("Content-Type:" . $a['mime']); echo $a['data'];

Code language: PHP (php)
PHP mysql blob với các tệp pdf
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

PHP MySQL BLOB with PDF files

Mã sau đây chèn nội dung của & nbsp;

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)
9 Tệp PDF vào cột Blob:

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
0then, chúng tôi có thể chọn dữ liệu PDF và hiển thị nó trong trình duyệt web như sau:
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

Then, we can select the PDF data and render it in the web browser as follows:

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
1 Để thay thế tệp PDF bằng tệp hình ảnh GIF, bạn sử dụng & nbsp; Phương pháp

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)
1 như sau:
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

To replace the PDF file with the GIF image file, you use the 

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)
1 method as follows:

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

Bạn có thể tải xuống mã nguồn của hướng dẫn này thông qua liên kết sau:

Tải xuống mã nguồn php mysql blob

Trong hướng dẫn này, chúng tôi đã chỉ cho bạn cách quản lý dữ liệu mysql blob & nbsp; bao gồm chèn, cập nhật và truy vấn blob.

Hướng dẫn này có hữu ích không?

Làm cách nào để thêm một blob trong cơ sở dữ liệu?

Chèn dữ liệu Blob vào cơ sở dữ liệu trước, mở tệp để đọc ở chế độ nhị phân. Thứ hai, xây dựng một tuyên bố chèn. Thứ ba, liên kết xử lý tệp với câu lệnh đã chuẩn bị bằng phương thức BindParam () và gọi phương thức EXECUTE () để thực thi truy vấn.open the file for reading in binary mode. Second, construct an INSERT statement. Third, bind the file handle to the prepared statement using the bindParam() method and call the execute() method to execute the query.

Chúng ta có thể lưu trữ Blob trong MySQL không?

Trong MySQL, chúng ta có thể sử dụng kiểu dữ liệu Blob để lưu trữ các tệp.Blob là một đối tượng lớn nhị phân có thể chứa một lượng dữ liệu khác nhau.Chúng tôi có thể đại diện cho các tệp ở định dạng nhị phân và sau đó lưu trữ chúng trong cơ sở dữ liệu của chúng tôi.Bốn loại blob là Tinyblob, Blob, Mediumblob và Longblob.we can use BLOB datatype to store the files. A BLOB is a binary large object that can hold a variable amount of data. We can represent the files in binary format and then store them in our database. The four BLOB types are TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB.

Làm cách nào để nhận dữ liệu blob từ cơ sở dữ liệu MySQL?

Truy xuất hình ảnh và tệp được lưu trữ dưới dạng blob từ bảng MySQL bằng Python..
Cài đặt Python đầu nối MySQL bằng PIP ..
Thứ hai, thiết lập kết nối cơ sở dữ liệu MySQL trong Python ..
Sau đó, xác định truy vấn chọn để tìm nạp các giá trị cột Blob từ bảng cơ sở dữ liệu ..
Thực hiện truy vấn chọn bằng con trỏ.execute ().
Sử dụng con trỏ ..

BLOB trong PHP là gì?

Blob là viết tắt của một đối tượng lớn nhị phân là một tập hợp dữ liệu nhị phân được lưu trữ dưới dạng giá trị trong cơ sở dữ liệu.Bằng cách sử dụng Blob, bạn có thể lưu trữ các tài liệu, hình ảnh và các tệp đa phương tiện khác trong cơ sở dữ liệu.Chúng tôi sẽ tạo một bảng mới có tên là tài liệu vì mục đích trình diễn.a binary large object that is a collection of binary data stored as a value in the database. By using the BLOB, you can store the documents, images, and other multimedia files in the database. We will create a new table named documents for the sake of demonstration.