2014-12-03 49 views
0

萬一我使用捲曲下載圖像,並希望存儲圖像MySQL的BLOB的領域我怎麼做呢? 通常我會使用load_file()本地文件的mysql函數,但在這個特定的問題,我不想保存文件的目的。MySQL的存儲BLOB正確的方式(不保存它的本地磁盤)

從捲曲原始圖像數據是可變$圖像我可以像

echo "<img src='data:image/jpeg;base64," . base64_encode($image) . "' />"; 

現在顯示出來,當我在查詢中使用MySQL驅動

$query = "INSERT into images (image_blob) VALUES ('{$image}')"; 
它添加到數據庫中,但是我得到錯誤

(注意,我沒有故意使用PDO或MySQLi驅動程序用於此示例)

我應該怎麼做在這種情況下,我不能找到這個答案,所以我試圖用的以下功能

addslashes($image) 
mysql_real_escape_string($image) 
bin2hex($image) 
base64_encode($image) 

每一個可以解決的問題和店面形象之一,但哪一個是在這種情況下的使用權?

P.S.即使每個函數都會產生不同長度的字符串,我注意到phpMyAdmin中報告的文件大小每次都是相同的,爲什麼?

回答

0

對於(mysql)數據庫查詢使用mysql_real_escape_string()。

它們的大小相同,因爲對於blob數據類型,MySQL在外部存儲blob的實際內容,而不是存儲在表中。

+0

phpMyAdmin似乎顯示實際的圖像文件大小,例如[BLOB - 64.0KiB] [BLOB - 20.7KiB] [BLOB - 64.0KiB] [BLOB - 9.4KiB] – 2014-12-03 18:07:32

+0

在這種情況下,您可能想要編輯您的問題,因爲它與此評論相矛盾。我不使用phpMyAdmin,所以我真的只是猜測。 – sn00k4h 2014-12-03 22:45:06