Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
[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.

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:

 
  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