Doktrin ile blob değerleri saklamak Sorunu

1 Cevap php

Ben Zend Framework ve bir MSSQL sunucusu arka uç ile birlikte benim ORM çerçeve olarak Doktrini 1.1.2 kullanıyorum. Ne yapmaya çalışıyorum veritabanına bir damla saklamak için, ama ben çalıştığınızda Doktrini bana hataları atıyor. Veritabanındaki sütun türü varbinary (max), ve aşağıdaki gibi Doktrini modeli yapılandırılır:

$this->hasColumn('binary_data', 'blob', null, array(
         'type' => 'blob',
         'notnull' => false,
         'primary' => false,
         'autoincrement' => false,
         ));

Bu Doktrin :: generateModelsFromDB ile oluşturulur ve doğru olmalıdır. Blob'un kaynak bir dosya gönderimi. Ben dosya yükleme başarılı olduğunu doğruladıktan ve ben (bozuk veri bir demet olarak gösterir) ikili verileri yazdırmak mümkün olduğumu.

Ben Doktrin modelini kullanarak ikili veri kaydetmeye çalıştığımda, ben ne dayalı farklı hata iletileri alıyorum. Ben şimdiye kadar (belki biraz daha çok ben hatırlamıyorum o) denedim:

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

Bu yalındır olmalı, ama ben sadece ne yapıyorum yanlış anlamaya olamaz.

1 Cevap

Eğer veritabanından çekin sonra veriler önceden tasarrufu ve base64_decode onu base64_encode-ing deneyebilirsiniz.