問題:
嘗試將映像儲存在MySQL 資料庫中,但插入不成功。資料庫表格有兩列:ImageId (int) 和 Image (longblob)。 PHP 程式碼使用 file_get_contents() 檢索映像數據,並使用以下 SQL 查詢將其插入 Image 列:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','file_get_contents($tmp_image)')";
但是,映像資料不會儲存在資料庫中。
解決方案:
問題在於 PHP 程式碼建構 SQL 查詢的方式。 file_get_contents() 函數呼叫包含在查詢字串的單引號內,這表示未插入實際映像資料。為了解決這個問題,應該使用 PHP 的變數插值功能:
$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_real_escape_string(file_get_contents($tmp_image)) . "')";
附加註意事項:
在資料庫中儲存大型二進位資料可能會導致效能問題。考慮為影像和其他大型物件使用單獨的儲存介質,例如檔案系統或雲端儲存服務。
以上是如何使用 PHP 成功將 Blob(映像)插入 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!