使用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中文網其他相關文章!