MySQL正确存储BLOB的方法(不保存本地磁盘)

时间:2014-12-03 03:38:37

标签: php mysql curl blob

如果我使用 cURL 下载图片并希望将图像存储在 BLOB 类型的 MySQL 字段中,我该怎么办呢? 通常我会对本地文件使用 load_file() mysql函数,但是在这个特定的问题中,我不想故意将文件保存在磁盘上。

来自CURL的原始图像数据是变量 $ image 我可以显示它

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中报告的文件大小每次都相同,为什么会这样?

1 个答案:

答案 0 :(得分:0)

对于(mysql)数据库查询,使用mysql_real_escape_string()。

它们的大小相同,因为对于blob数据类型,MySQL会在外部存储blob的实际内容,而不是在表中。