嘗試在MySQL 資料庫中儲存映像時,某些使用者可能會遇到影像不正確的問題未正確插入。這種差異可能是由於對 PHP 如何處理內插字串中的函數呼叫的誤解而產生的。
在以下程式碼中,目的是將二進位映像資料儲存在資料庫中:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','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) . "')";
現在,圖像資料是在執行查詢之前正確插入字串中。
二進位影像資料可能包含特殊字符,例如單引號,這可能會使 SQL 查詢無效。為了緩解這種情況,應該在插值之前對資料進行轉義:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
需要注意的是,在資料庫中儲存大量影像數據可能效率低。考慮替代儲存選項,例如將影像路徑儲存在資料庫中,將實際影像儲存在專用檔案系統或內容交付網路 (CDN) 中。
以上是如何使用 PHP 成功將 BLOB(映像)插入 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!