當嘗試在MySQL 中儲存映像時,使用者可能會遇到以下問題:影像資料未按預期存儲,即使列印時輸出正確。這是因為 PHP 函數 file_get_contents() 在 SQL 查詢中被視為字串而不被執行。
一個解決方案是串聯 file_get_contents() 的結果與 SQL 查詢字串一起使用,允許它作為查詢的一部分執行。以下程式碼說明了這種方法:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . file_get_contents($tmp_image) . "')";
為了防止SQL 注入漏洞,必須在將包含任何特殊字元的二進位資料插入到資料庫.這可以使用 mysql_escape_string() 函數來實作。更新後的程式碼為:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
作為最佳實踐,建議避免直接在MySQL 中儲存大型二進位資料(例如影像)資料庫。相反,請考慮將它們儲存在單獨的檔案中並在資料庫中引用它們的路徑。這種方法增強了資料庫效能和靈活性。
以上是如何使用 PHP 正確地將 BLOB 映像資料插入 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!