首頁 > 後端開發 > php教程 > 為什麼我的 PHP 程式碼無法將映像插入 MySQL BLOB 欄位?

為什麼我的 PHP 程式碼無法將映像插入 MySQL BLOB 欄位?

Mary-Kate Olsen
發布: 2024-11-30 09:33:11
原創
199 人瀏覽過

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

使用PHP 在MySQL 資料庫插入BLOB:影像儲存故障排除

嘗試在MySQL 資料庫中儲存影像時,您可能會遇到問題如果提供的查詢無法正確保存資料。讓我們深入研究問題並探索潛在的解決方案。

問題:

給定提供的包含ImageId(整數)和Image(longblob)列的表結構,以下查詢被利用:

$sql = "INSERT INTO ImageStore(ImageId,Image)               
VALUES('$this->image_id','file_get_contents($tmp_image)')";
登入後複製

儘管得到了預期的結果file_get_contents($tmp_image)列印其值時,資料未儲存在資料庫中。

解決方案:

解決方案1:變數內插

您建立的查詢容易受到常見PHP 陷阱的影響。當您在雙引號字串中嵌入變數 file_get_contents($tmp_image) 時,PHP 將不會自動執行該函數。相反,它會將其視為文字字串,從而將“file_get_contents($tmp_image)”寫入資料庫而不是其傳回值。

要正確連接file_get_contents($tmp_image) 的結果,您需要退出雙引號字串:

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

解決方案2:清理

如果二進位資料包含單引號('),則查詢將無效。為了防止這種情況,請在插入資料之前使用mysql_escape_string 清理資料:
$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
登入後複製

解決方案3:替代儲存

在關聯式資料庫中儲存大型二進位數據(BLOB) 可以效率低。考慮替代儲存選項,例如專為二進位資料管理設計的單獨檔案或雲端儲存服務。

以上是為什麼我的 PHP 程式碼無法將映像插入 MySQL BLOB 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板