Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como armazenar arquivos .pdf no MySQL como BLOBs usando PHP?


EDITADO PARA ADICIONAR :O código a seguir está desatualizado e não funcionará no PHP 7. Veja a nota na parte inferior da resposta para mais detalhes.

Assumindo uma estrutura de tabela de um ID inteiro e uma coluna BLOB DATA, e assumindo que as funções do MySQL estão sendo usadas para fazer interface com o banco de dados, você provavelmente poderia fazer algo assim:
$result = mysql_query 'INSERT INTO table (
    data
) VALUES (
    \'' . mysql_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf')) . '\'
);';

Uma palavra de aviso, porém, armazenar blobs em bancos de dados geralmente não é considerado a melhor ideia, pois pode causar inchaço na tabela e tem vários outros problemas associados. Uma abordagem melhor seria mover o arquivo para algum lugar no sistema de arquivos onde ele possa ser recuperado e armazenar o caminho para o arquivo no banco de dados em vez do próprio arquivo.

Além disso, o uso de chamadas de função mysql_* é desencorajado, pois esses métodos são efetivamente obsoletos e não são realmente construídos com versões do MySQL mais recentes que 4.x em mente. Você deve mudar para mysqli ou PDO.

ATUALIZAÇÃO :as funções mysql_* estão obsoletas no PHP 5.xe são REMOVIDOS COMPLETAMENTE NO PHP 7! Agora você não tem escolha a não ser mudar para uma abstração de banco de dados mais moderna (MySQLI, PDO). Decidi deixar a resposta original acima intacta por razões históricas, mas na verdade não a uso

Veja como fazer isso com o mysqli no modo procedural:
$result = mysqli_query ($db, 'INSERT INTO table (
    data
) VALUES (
    \'' . mysqli_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf'), $db) . '\'
);');

A maneira ideal de fazer isso é com instruções preparadas MySQLI/PDO.