Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Masukkan Blob di database MySql dengan php

Masalah

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

Ini membuat string dalam PHP bernama $sql . Lupakan MySQL sebentar, karena Anda belum menjalankan kueri apa pun. Anda baru saja membuat string.

Keajaiban PHP berarti Anda dapat menulis nama variabel — katakanlah, $this->image_iddi dalam tanda kutip ganda dan variabelnya masih diperluas secara ajaib.

Fungsionalitas ini, yang dikenal sebagai "interpolasi variabel", tidak terjadi untuk panggilan fungsi. Jadi, yang Anda lakukan di sini hanyalah menulis string "file_get_contents($tmp_image)" ke dalam basis data.

Solusi (1)

Jadi, untuk menggabungkan hasil pemanggilan file_get_contents($tmp_image) , Anda harus melompat keluar dari string dan melakukan sesuatu secara eksplisit:

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

(Anda bahkan dapat melihat hanya dari sintaks yang menyoroti cara kerjanya.)

Solusi (2)

Sekarang masalah yang Anda miliki adalah jika data biner berisi ' , kueri Anda tidak valid. Jadi Anda harus menjalankannya melalui mysql_escape_string untuk membersihkannya untuk operasi kueri:

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

Solusi (3)

Sekarang Anda memiliki benar-benar string besar, dan database Anda menjadi besar.

Sebaiknya tidak menyimpan gambar dalam database , di mana Anda dapat membantunya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Akses ditolak untuk pengguna 'root'@'localhost' saat mencoba memberikan hak istimewa. Bagaimana cara memberikan hak istimewa?

  2. Bagaimana menemukan kapan server MySQL/MariaDB dimulai

  3. Bagaimana cara saya menanyakan antara dua tanggal menggunakan MySQL?

  4. Pernyataan MySQL membutuhkan waktu lebih dari satu menit untuk dieksekusi

  5. KIRI GABUNG hanya baris pertama