Apabila cuba menyimpan imej dalam MySQL, pengguna mungkin menghadapi masalah di mana data imej tidak disimpan seperti yang diharapkan, walaupun ia keluar dengan betul apabila dicetak. Ini kerana fungsi PHP file_get_contents() dianggap sebagai rentetan dalam pertanyaan SQL dan tidak dilaksanakan.
Satu penyelesaian adalah untuk menggabungkan hasil file_get_contents() dengan rentetan pertanyaan SQL, membolehkannya dilaksanakan sebagai sebahagian daripada pertanyaan. Kod berikut menggambarkan pendekatan ini:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . file_get_contents($tmp_image) . "')";
Untuk mengelakkan kelemahan suntikan SQL, adalah penting untuk melarikan data binari yang mengandungi sebarang aksara khas sebelum memasukkannya ke dalam pangkalan data. Ini boleh dicapai menggunakan fungsi mysql_escape_string(). Kod yang dikemas kini ialah:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
Sebagai amalan terbaik, adalah disyorkan untuk mengelak daripada menyimpan data binari yang besar, seperti imej, terus dalam MySQL pangkalan data. Sebaliknya, pertimbangkan untuk menyimpannya dalam fail berasingan dan merujuk laluannya dalam pangkalan data. Pendekatan ini meningkatkan prestasi pangkalan data dan fleksibiliti.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data Imej BLOB dengan betul ke dalam MySQL Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!