如果我使用 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中报告的文件大小每次都相同,为什么会这样?
答案 0 :(得分:0)
对于(mysql)数据库查询,使用mysql_real_escape_string()。
它们的大小相同,因为对于blob数据类型,MySQL会在外部存储blob的实际内容,而不是在表中。