Php 使用条令存储blob值时出现问题

Php 使用条令存储blob值时出现问题,php,sql-server,doctrine,blob,Php,Sql Server,Doctrine,Blob,我正在使用Doctrine 1.1.2作为我的ORM框架,结合Zend框架和MSSQL服务器后端。我试图做的是将一个blob存储到数据库中,但当我尝试时,条令会给我带来错误。数据库中的列类型为varbinarymax,条令中的模型配置如下: $this->hasColumn('binary_data', 'blob', null, array( 'type' => 'blob', 'notnull' => false, 'p

我正在使用Doctrine 1.1.2作为我的ORM框架,结合Zend框架和MSSQL服务器后端。我试图做的是将一个blob存储到数据库中,但当我尝试时,条令会给我带来错误。数据库中的列类型为varbinarymax,条令中的模型配置如下:

$this->hasColumn('binary_data', 'blob', null, array(
         'type' => 'blob',
         'notnull' => false,
         'primary' => false,
         'autoincrement' => false,
         ));
这是由Doctrine::generateModelsFromDB生成的,应该是正确的。blob的来源是文件上载。我已经验证了文件上传成功,并且我能够将二进制数据显示为一堆乱码数据打印出来

当我尝试使用条令模型保存二进制数据时,我会根据我的操作得到不同的错误消息。到目前为止,我已经尝试过这一点,可能更多,我不记得了:

// 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();

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

您可以在保存数据之前尝试数据,然后从数据库中提取数据。

这对varbinary列有效吗?如果我没弄错的话,这将导致字符串。我可以将列更改为varcharmax,但我更愿意将其存储为varbinary。我来试试,看看有什么效果。我简直不敢相信用doctrine将blob存储到mssql服务器是不可能的,所以我真的很想看看如何做到这一点的示例;您写道:数据库中的列是varcharmax类型,这就是为什么我认为二进制数据有问题。检查您的模式,可能您的列类型有误,并且一直在尝试将二进制数据保存到字符串列中。哦,对不起,上面的文本中有误。数据库中的列类型为varbinarymax。