Rumah > pembangunan bahagian belakang > tutorial php > Mengapa kod PHP saya gagal memasukkan imej ke dalam lajur MySQL BLOB?

Mengapa kod PHP saya gagal memasukkan imej ke dalam lajur MySQL BLOB?

Mary-Kate Olsen
Lepaskan: 2024-11-30 09:33:11
asal
187 orang telah melayarinya

Why is my PHP code failing to insert images into a MySQL BLOB column?

Memasukkan BLOB dalam Pangkalan Data MySQL dengan PHP: Menyelesaikan Masalah Storan Imej

Apabila cuba menyimpan imej dalam pangkalan data MySQL, anda mungkin menghadapi masalah jika pertanyaan yang diberikan gagal menyimpan data dengan betul. Mari kita mendalami masalah dan terokai penyelesaian yang berpotensi.

Masalah:

Memandangkan struktur jadual yang disediakan dengan lajur ImageId (integer) dan Imej (longblob), pertanyaan berikut telah digunakan:

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

Walaupun memperoleh hasil yang diharapkan daripada file_get_contents($tmp_image) apabila mencetak nilainya, data tidak disimpan dalam pangkalan data.

Penyelesaian:

Penyelesaian 1: Interpolasi Pembolehubah

Pertanyaan yang anda bina terdedah kepada PHP biasa perangkap. Apabila anda membenamkan pembolehubah file_get_contents($tmp_image) dalam rentetan petikan dua kali, PHP tidak akan melaksanakan fungsi secara automatik. Sebaliknya, ia akan menganggapnya sebagai rentetan literal, dengan itu menulis "file_get_contents($tmp_image)" ke pangkalan data dan bukannya nilai yang dikembalikan.

Untuk menggabungkan hasil file_get_contents($tmp_image) dengan betul, anda perlu keluar dari rentetan petikan dua kali:

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

Penyelesaian 2: Sanitasi

Jika data binari mengandungi petikan tunggal ('), pertanyaan akan menjadi tidak sah. Untuk mengelakkan ini, bersihkan data menggunakan mysql_escape_string sebelum memasukkannya:

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

Penyelesaian 3: Storan Alternatif

Menyimpan data binari besar (BLOB) dalam pangkalan data hubungan boleh menjadi tidak cekap. Pertimbangkan pilihan storan alternatif seperti fail berasingan atau perkhidmatan storan awan yang direka untuk pengurusan data binari.

Atas ialah kandungan terperinci Mengapa kod PHP saya gagal memasukkan imej ke dalam lajur MySQL BLOB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan