Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Berjaya Memasukkan Gumpalan (Imej) ke dalam MySQL menggunakan PHP?
Masalah:
Percubaan untuk menyimpan imej dalam pangkalan data MySQL, tetapi sisipan tidak berjaya. Jadual pangkalan data mempunyai dua lajur: ImageId (int) dan Image (longblob). Kod PHP menggunakan file_get_contents() untuk mendapatkan semula data imej dan memasukkannya ke dalam lajur Imej menggunakan pertanyaan SQL berikut:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','file_get_contents($tmp_image)')";
Walau bagaimanapun, data imej tidak disimpan dalam pangkalan data.
Penyelesaian:
Isunya terletak pada cara kod PHP membina Pertanyaan SQL. Panggilan fungsi file_get_contents() disertakan dalam petikan tunggal dalam rentetan pertanyaan, yang bermaksud bahawa data imej sebenar tidak dimasukkan. Untuk menyelesaikan masalah ini, ciri interpolasi pembolehubah PHP harus digunakan:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
Selain itu, untuk memastikan data binari tidak mengandungi sebarang aksara yang boleh memecahkan pertanyaan SQL, adalah disyorkan untuk membersihkan data menggunakan fungsi mysql_escape_string():
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_real_escape_string(file_get_contents($tmp_image)) . "')";
Tambahan Pertimbangan:
Menyimpan data binari yang besar dalam pangkalan data boleh membawa kepada isu prestasi. Pertimbangkan untuk menggunakan medium storan yang berasingan, seperti sistem fail atau perkhidmatan storan awan, untuk imej dan objek besar yang lain.
Atas ialah kandungan terperinci Bagaimana untuk Berjaya Memasukkan Gumpalan (Imej) ke dalam MySQL menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!