Lançado Adianti Framework 7.6!
Clique aqui para saber mais
[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:

  1. <?php
  2. $lacamentoFoto                                                  = new DesperdicioFoto();
  3. $lacamentoFoto->nome                                      $foto;
  4. $lacamentoFoto->mimetype                               $mimetype;
  5. $lacamentoFoto->content                                   $conteudo;
  6. $lacamentoFoto->desperdicio_lancamento_id   $object->id;
  7. $lacamentoFoto->store();                   
  8. ?>


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.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


JD

Consegui resolver usando PDO:

  1. <?php
  2. $pdo TTransaction::get();
  3. $sql "INSERT INTO desperdicio_foto (nome,mimetype,content,desperdicio_lancamento_id) VALUES(:nome,:mimetype,:content,:desperdicio_lancamento_id)";
  4. $pdo $pdo->prepare($sql);
  5. $pdo->bindParam(':nome',$foto);
  6. $pdo->bindParam(':mimetype',$mimetype);
  7. $pdo->bindParam(':content',$conteudo,PDO::PARAM_LOB);
  8. $pdo->bindParam(':desperdicio_lancamento_id',$data->id,PDO::PARAM_LOB);
  9. $pdo->execute();
  10. ?>
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