首頁 >資料庫 >mysql教程 >如何使用 PHP 正確地將映像 Blob 插入 MySQL?

如何使用 PHP 正確地將映像 Blob 插入 MySQL?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-26 15:53:09199瀏覽

How to Properly Insert Image Blobs into MySQL Using PHP?

使用 PHP 將 Blob 插入 MySQL 資料庫

當需要在 MySQL 資料庫中儲存映像時,可能會遇到困難。表結構如下:

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)

以下查詢嘗試插入映像,但無法儲存預期的二進位資料:

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

問題在於函數的串聯在字串內調用file_get_contents($tmp_image ) 。 PHP 的變數插值僅適用於變量,不適用於函數呼叫。以下是三種解決方案:

解決方案1: 使用明確串聯:

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

解決方案2: 清理MySQL 查詢的二進位資料:

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

注意:如果可能的話,最好不要將大圖像儲存在 MySQL 資料庫中。

以上是如何使用 PHP 正確地將映像 Blob 插入 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn