【问题标题】:how do I insert images into a database?如何将图像插入数据库?
【发布时间】:2014-01-07 09:10:51
【问题描述】:

我正在学习 mysql,并且在构建图像数据库的代码方面遇到了巨大的麻烦......

我知道如何创建表格,并且我知道我需要 longblob 来存储图像。不是问题。目前我正在通过以下方式创建:CREATE TABLE pics ( picid int unsigned not null auto_increment primary key, filename varchar(255) not null unique, caption varchar(255) not null, pic longblob not null );

picid 中的“not null”给我带来了问题。因为接下来当我尝试使用此代码进行填充时: INSERT INTO pics values ( NULL, 'bear.jpg', 'a picture of a bear', LOAD_FILE('C:/Users/USERS_NAME/Pictures/bear.jpg') );

我遇到错误 #1048 - 列 'pic' 不能为空。

请帮忙。我快疯了……

【问题讨论】:

  • 你为什么用sql-server 标记它...答案是你不应该将图像存储在数据库中。
  • 建议使用 sql-server 标记...我正在学习老兄..有人建议我使用路径而不是仅将图片加载到数据库中

标签: php mysql image


【解决方案1】:

问题不在于picidLOAD_FILE('C:/Users/USERS_NAME/Pictures/bear.jpg') 很可能失败并返回 NULL

更不用说,您不应该将图像存储在数据库中。图像是文件,应按原样存储在文件系统上。数据库应该在文件系统中保存元数据 + 文件的地址。

请参阅Effeciently storing user uploaded images on the file system 了解可遵循的良好系统。

【讨论】:

  • load_file 应该返回该文件......但路径不是“空的”。没错。
  • @acegreene2:“应该”和“是”之间有很大的差距。确保 LOAD_FILE 返回您认为的内容。另外,请阅读其余答案。
  • 感谢您的快速回复。你提到我的文章有点太高级了,我没有经验。但是我的路径使用正斜杠而不是反斜杠(b/c 反斜杠是 mysql 中的转义命令)我应该只使用双反斜杠吗?
  • 你会使用什么代码/架构来构建和填充这种数据库?
【解决方案2】:

如果您仍想继续使用 blob 方法,请尝试本教程 http://forum.codecall.net/topic/40286-tutorial-storing-images-in-mysql-with-php/

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 2015-02-20
    • 2011-07-22
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2013-05-10
    相关资源
    最近更新 更多