Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memasukkan Gumpalan Imej dengan betul ke dalam MySQL Menggunakan PHP?

Bagaimana untuk Memasukkan Gumpalan Imej dengan betul ke dalam MySQL Menggunakan PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-26 15:53:09270semak imbas

How to Properly Insert Image Blobs into MySQL Using PHP?

Memasukkan Gumpalan ke dalam Pangkalan Data MySQL dengan PHP

Apabila perlu menyimpan imej dalam pangkalan data MySQL, seseorang mungkin menghadapi kesukaran. Berikut ialah struktur jadual:

mysql> describe ImageStore;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| ImageId | int(11)  | NO   | PRI | NULL    |       |
| Image   | longblob | NO   |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

Pertanyaan berikut cuba memasukkan imej, tetapi gagal menyimpan data binari yang dijangkakan:

$tmp_img = $this->image['tmp_name'];
$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','file_get_contents($tmp_image)')";
mysql_query($sql); 

Isunya terletak pada gabungan fungsi panggil file_get_contents($tmp_image) di dalam rentetan. Interpolasi pembolehubah PHP hanya berfungsi untuk pembolehubah, bukan panggilan fungsi. Berikut ialah tiga penyelesaian:

Penyelesaian 1: Gunakan penggabungan eksplisit:

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

Penyelesaian 2: Bersihkan data binari untuk pertanyaan MySQL:

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

Nota: Lebih suka tidak menyimpan imej besar dalam pangkalan data MySQL jika boleh.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Gumpalan Imej dengan betul ke dalam MySQL Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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