Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn Blobs vào cơ sở dữ liệu 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 . Quên MySQL trong một phút, bởi 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.

Sự kỳ diệu của PHP có nghĩa là bạn có thể viết một tên biến - giả sử, $this->image_id - bên trong dấu ngoặc 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 lệnh gọi hàm. Vì vậy, tất cả những gì bạn đang làm ở đây là viết chuỗi "file_get_contents($tmp_image)" vào cơ sở dữ liệu.

Giải pháp (1)

Vì vậy, để nối kết quả của việc gọi file_get_contents($tmp_image) , bạn phải nhảy ra khỏi chuỗi và thực hiện mọi việc 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 ngay cả 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 gặp phải là nếu dữ liệu nhị phân chứa bất kỳ ' 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 mysql_escape_string để làm sạch 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 thực sự chuỗi lớn và cơ sở dữ liệu của bạn ngày càng cồng kềnh.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giống như Phân biệt chữ hoa chữ thường trong MySQL

  2. Chuyển đổi tem DateTime của MySql thành định dạng Ngày của JavaScript

  3. Cách thay đổi mật khẩu gốc của MySQL hoặc MariaDB trong Linux

  4. Cách nhập dữ liệu từ tệp văn bản vào cơ sở dữ liệu mysql

  5. Làm cách nào để xuất cơ sở dữ liệu SQL Server sang MySQL?