首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Doctrine存储BLOB值时出现问题

问使用Doctrine存储BLOB值时出现问题
EN

Stack Overflow用户
提问于 2010-02-17 22:19:54
回答 1查看 3.2K关注 0票数 0

我使用Doctrine 1.1.2作为ORM框架,并结合Zend framework和MSSQL服务器后端。我试图做的是将blob存储到数据库中,但是Doctrine在我尝试的时候抛出了错误。数据库中的列的类型为varbinary(max),Doctrine中的模型配置如下:

代码语言:javascript
复制
$this->hasColumn('binary_data', 'blob', null, array(
         'type' => 'blob',
         'notnull' => false,
         'primary' => false,
         'autoincrement' => false,
         ));

这是由Doctrine::generateModelsFromDB生成的,应该是正确的。blob的源是文件上传。我已经验证了文件上传成功,并且能够打印二进制数据(显示为一堆乱码数据)。

当我尝试使用Doctrine模型保存二进制数据时,根据我所做的事情得到不同的错误消息。到目前为止,我已经尝试过了(可能还有一些我不记得了):

代码语言:javascript
复制
// Error:SQLSTATE[HY000]: General error: 10007 Incorrect syntax near '%PDF-1.5 %µµµµ...
$model->binary_data = fread(fopen($_FILES["file"]["tmp_name"], 'r'), filesize($_FILES["file"]["tmp_name"]));
$model->save();
---
// Error: same as above
$fileHandle = fopen($_FILES["file"]["tmp_name"], "r");
$fileContent = fread($fileHandle, filesize($_FILES["file"]["tmp_name"]));
$model->binary_data = $fileContent;
$model->save();
---
// This should work on 1.2, but I have 1.1.2
// Error: Validation failed in class Clazz 1 field had validation error: * 1 validator failed on binary_data (type)
$model->binary_data = file($_FILES["file"]["tmp_name"]);
$model->save();

这应该是直截了当的,但我就是不知道我做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2010-02-17 22:33:45

您可以在保存数据之前尝试使用base64_encode-ing,并在从数据库中提取数据后使用base64_decode。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2281349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档