[DUVIDA] Salvar campo binário TRecord Olá pessoal, preciso salvar em um campo dados binários obtidos pela função "file_get_contents", gostaria de salvar direto sem ter que usar o "base64_encode" pois como esta função retorna uma string o espaço em disco que ela ocupará será maior que os dados binários. Eu tentei fazer assim: ...
JD
[DUVIDA] Salvar campo binário TRecord  
Fechado
Olá pessoal, preciso salvar em um campo dados binários obtidos pela função "file_get_contents", gostaria de salvar direto sem ter que usar o "base64_encode" pois como esta função retorna uma string o espaço em disco que ela ocupará será maior que os dados binários.
Eu tentei fazer assim:

<?php$lacamentoFoto                                                  = new DesperdicioFoto();$lacamentoFoto->nome                                      = $foto;$lacamentoFoto->mimetype                               = $mimetype;$lacamentoFoto->content                                   = $conteudo;$lacamentoFoto->desperdicio_lancamento_id   = $object->id;$lacamentoFoto->store();                   ?>


A variável $conteudo contém como valor o retorno da função file_get_contents, ao chamar o metodo store(); do TRecord é retornado o seguinte erro:

"SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xFF\xD8\xFF\xE0\\...' for column 'sql_command' at row 1"

Alquem sabe como posso resolver este problema?
Obrigado.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


JD

Consegui resolver usando PDO:

<?php$pdo = TTransaction::get();$sql = "INSERT INTO desperdicio_foto (nome,mimetype,content,desperdicio_lancamento_id) VALUES(:nome,:mimetype,:content,:desperdicio_lancamento_id)";$pdo = $pdo->prepare($sql);$pdo->bindParam(':nome',$foto);$pdo->bindParam(':mimetype',$mimetype);$pdo->bindParam(':content',$conteudo,PDO::PARAM_LOB);$pdo->bindParam(':desperdicio_lancamento_id',$data->id,PDO::PARAM_LOB);$pdo->execute();?>
PD

Jheferson,

A versão 3.0 do framework possui suporte nativo à Prepared Statements, bastaria ligar no arquivo de configuração de acesso (INI) do banco de dados:

prep = "1"

O que tornaria desnecessário realizar a query manualmente.

Atenciosamente,
Pablo