【问题标题】:How to insert images in blob in mysql table using only sql syntax (without PHP)?如何仅使用 sql 语法(不使用 PHP)在 mysql 表中的 blob 中插入图像?
【发布时间】:2016-03-23 13:37:53
【问题描述】:
  1. 您好,我是 SQL 新手,我想将图像存储在数据库中。我已经创建了一个具有 blob 数据类型的列,并尝试执行此处给出的以下语句
INSERT INTO `abc`
    (`img`)
    SELECT  
        BulkColumn FROM OPENROWSET(
            Bulk 'C:\Users\adity\Desktop\New folder\a.png', SINGLE_BLOB) AS BLOB

报错

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '( Bulk C:\Users\name\Desktop\New folder\a.png, SINGLE_BLOB) AS BLOB' 在第 4 行

我还尝试了给定here的以下代码

insert into table `abc`(`img`) values('C:\Users\name\Desktop\New folder\an.jpg') where id=1;

这给出了错误

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'table abc(img) values('C:\Users\adity\Desktop\New folder\an.jpg') where id= 附近使用的正确语法1' 在第 1 行

所以请建议我如何在不使用 php 等的情况下将图像存储在 blob 中,而只需使用简单的 sql insert 语句。我正在为我的数据库使用 wamp 服务器。

  1. 我知道我应该为图像使用文件系统而不是使用数据库。但是文件系统实际上是什么意思。它是指一个文件或图像托管站点,其地址将存储在数据库中。

【问题讨论】:

标签: mysql database blob mysql-loadfile


【解决方案1】:

我认为该命令是一种 MSSQL 语法。试试这个命令:

INSERT INTO `abc`
(`img`)
VALUES
(LOAD_FILE('C:/Users/adity/Desktop/New folder/a.png'))

此命令将图像存储为 BLOB

【讨论】:

  • 语句执行成功,现在表看起来像this。它是否正确,它是什么格式?
  • 是的,这是正确的 BLOB 格式。您是否期望图像会出现在那里?这不是它的工作原理。您可以使用此 BLOB 来显示图像。您可以在此处参考如何使用 PHP 显示 BLOB。 stackoverflow.com/questions/20556773/…
【解决方案2】:

通过 Mysql 工作台,使用以下步骤将图像加载到数据库中非常容易。

  1. 右键单击表中(blob)列的值,然后选择“从文件中加载值”。
  2. 然后我们可以提供系统中的图片路径。
  3. 然后将其转换为字节数组并自动存储。
  4. 最后保存表格的更改。

【讨论】:

    【解决方案3】:

    以下对我有用,

    但是,我可以通过首先将图像(fileName.jpg)文件移动到下面的文件夹(在我的情况下)C:\ProgramData\MySQL\MySQL Server 5.7\Uploads 来完成它,然后我执行了下面的命令,它对我有用,

    INSERT INTO `abc`
    (`img`)
    VALUES
    (LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/an.jpg'));
    

    希望这会有所帮助。

    【讨论】:

    • WHERE id=1 ??
    • 我正在回答这个问题。 :D
    • 一个 INSERT 查询没有WHERE 子句
    猜你喜欢
    • 2018-06-08
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2021-02-05
    • 2021-05-21
    • 1970-01-01
    • 2011-10-26
    相关资源
    最近更新 更多