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_id
— di 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.