Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用SQL Server(Server Management Studio)存储和检索图像_Php_Sql_Sql Server_Image - Fatal编程技术网

Php 如何使用SQL Server(Server Management Studio)存储和检索图像

Php 如何使用SQL Server(Server Management Studio)存储和检索图像,php,sql,sql-server,image,Php,Sql,Sql Server,Image,尝试将文件插入SQL Server数据库时遇到困难。我会尽我所能将其分解: 我应该使用什么数据类型来存储图像文件(jpeg/png/gif/etc)?现在我的表使用的是image数据类型,但我很好奇varbinary是否是更好的选择 如何将图像插入数据库?Microsoft SQL Server Management Studio是否具有允许将文件插入表的内置函数?如果是,如何做到这一点?另外,如何通过使用HTML表单和PHP处理输入数据并将其放入表中来实现这一点 如何从表中获取图像并将其显示在

尝试将文件插入SQL Server数据库时遇到困难。我会尽我所能将其分解:

  • 我应该使用什么数据类型来存储图像文件(jpeg/png/gif/etc)?现在我的表使用的是
    image
    数据类型,但我很好奇
    varbinary
    是否是更好的选择

  • 如何将图像插入数据库?Microsoft SQL Server Management Studio是否具有允许将文件插入表的内置函数?如果是,如何做到这一点?另外,如何通过使用HTML表单和PHP处理输入数据并将其放入表中来实现这一点

  • 如何从表中获取图像并将其显示在页面上?我知道如何选择单元格的内容,但如何将其转换为图片。我是否需要一个标题(内容类型:image/jpeg)

  • 我在MySQL上做这些事情都没有问题,但是SQL Server环境对我来说还是新的,我正在为我的工作做一个项目,需要使用存储过程来获取各种数据


    非常感谢所有帮助。

    命令行提供了可接受的批量插入util。有关如何通过t-SQL将二进制数据插入MS SQL的详细信息,请阅读。

    图像类型已弃用,因此不要使用该类型

    简而言之,如果是SQL 2008,则使用
    FILESTREAM
    类型;如果是2005年或更早,则使用
    varbinary(max)
    类型

    如果是SQL 2008,更好的答案是使用
    FILESTREAM
    类型,否则根本不在数据库中存储图像。数据库不是为这种类型的东西而构建的,在其中抛出blob会严重影响性能
    FILESTREAM
    通过将实际数据存储在文件系统上来回避问题;其他一切都是不合标准的解决方案


    至于如何读写
    varbinary
    列,如果您选择采用这种非理想的方法,它将在PHP中表示为流。这是作为列值从查询中得到的,我相信这是作为参数必须输入的。

    我们使用的是SQL Server 2008,但下拉列表中似乎没有
    FILESTREAM
    类型。如果
    varbinary
    有效,那么就必须这样做。主要关注的是如何将图像插入表中。感谢您注意到该图像类型已被弃用,因为我正倾向于该路线。:)@Joe Majewski:FILESTREAM在SQL Server 2008的所有版本中都可用。当您有FILESTREAM时,不要使用
    varbinary
    。您不必在下拉列表中看到它-请参阅此处的入门指南:好的,我现在正在研究它。意识到我正在处理一个“真实”数据库的副本,因为我没有访问所有数据的特权,所以我希望创建一个支持filestream的数据库在上线时不会引起问题。这是一个关于filestream的伟大讨论,还链接到MS Research,主题是在2005 DB中存储图像(结果<256k良好,>1mb不良,YMMV):哦,我真的很喜欢公用设施的工作方式,但这并不完全是我所需要的。基本上,我正在为北伊利诺伊大学编写一份申请书,该申请书存储了居住在宿舍的每个学生的照片。当学生试图在前台办理入住手续时,工作人员可以通过电话确认他们实际上是学生正在验证图片是否匹配。我不打算在数据库中插入任何这些图片。我只需要能够成功插入单个图像以进行测试,以确保我可以正确检索它。是否存在仅在硬盘上使用单个路径的插入?