2012-09-06 61 views
0

我有一个旧用户网站,我们当前正在更新。该网站的用户之前已经上传了存储在目录中的配置文件图片。我现在想要将这些配置文件映像保存在数据库中,(很容易备份所有数据),但是在解决问题时会遇到问题。将文件转换为blob以保存在数据库中

有很多教程都在讨论如何从刚刚上传的文件和使用tmp名称等方面进行说明,但是如何使用已上传的文件重新创建?

我已经调查 $data = file_get_contents($filename); 这似乎是创建一个二进制文件,但似乎并没有在数据库中保存:

mysql_query("UPDATE profiles SET company_logo = mysql_real_escape_string('".$data."') WHERE id = 1 ") or die(mysql_error()); 

* UPDATE * 所以寻找到这之后还有一些,我想我会跟大多数人一起保存图像,因为他们已经是...在文件夹中。

+2

请请不要这样做。文件系统是一个很棒的文件数据库。 – Adi

+0

你真的不应该在数据库中存储文件。文件应该留在文件系统中有很好的理由。看看[这个问题](http://stackoverflow.com/questions/492549/how-can-i-insert-large-files-in-mysql-db-using-php) –

回答

2

将图像存储在数据库中通常是一个坏主意。

最好将图像存储在文件中并在字段或表格中保留引用。

但是,如果要存储它们,则必须将它们存储为BLOB(Binairy Large OBject)。在BLOB字段上,不进行字符翻译。存储它们时,必须将它们完全保存为文件内容。因此,请删除mysql_real_escape string,因为它会弄乱您的二进制数据。

+0

为什么这是一个糟糕的主意将图像存储在数据库中?我知道加载时间可能会稍微慢一点... – jimbo

+1

它总是很难不启动对db图像存储的战争:)看看这个讨论:http://stackoverflow.com/questions/3748/storing-images- in-db-yea-or-nay – JvdBerg

+0

删除mysql_real_escape_string可能很危险。想想如果你真的有'')会发生什么事情;下拉表x;'在文件中?更好的方法是使用预准备的语句,然后用blob数据执行它们。这样DB服务器/驱动程序将自己处理任何必要的转换。 –

相关问题