Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да съхранявате .pdf файлове в MySQL като BLOB с помощта на PHP?

РЕДАКТИРАНО ЗА ДОБАВЯНЕ :Следният код е остарял и няма да работи в PHP 7. Вижте бележката в долната част на отговора за повече подробности.

Ако приемем структура на таблица с целочислен идентификатор и колона DATA и приемем, че функциите на MySQL се използват за взаимодействие с базата данни, вероятно бихте могли да направите нещо подобно:

$result = mysql_query 'INSERT INTO table (
    data
) VALUES (
    \'' . mysql_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf')) . '\'
);';

Едно предупреждение обаче, съхраняването на петна в бази данни обикновено не се счита за най-добрата идея, тъй като може да причини раздуване на таблицата и има редица други проблеми, свързани с това. По-добър подход би бил да преместите файла някъде във файловата система, където може да бъде извлечен, и да съхраните пътя до файла в базата данни вместо самия файл.

Също така, използването на извиквания на функции на mysql_* не се препоръчва, тъй като тези методи са ефективно отхвърлени и всъщност не са създадени с версии на MySQL, по-нови от 4.x. Вместо това трябва да преминете към mysqli или PDO.

АКТУАЛИЗИРАНЕ :функциите на mysql_* са оттеглени в PHP 5.x и са ПРЕМАХНАТИ НАПЪЛНО В PHP 7! Вече нямате друг избор, освен да преминете към по-модерна абстракция на база данни (MySQLI, PDO). Реших да оставя оригиналния отговор по-горе непокътнат поради исторически причини, но всъщност не го използвам

Ето как да го направите с mysqli в процедурен режим:

$result = mysqli_query ($db, 'INSERT INTO table (
    data
) VALUES (
    \'' . mysqli_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf'), $db) . '\'
);');

Идеалният начин да го направите е с MySQLI/PDO подготвени оператори.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете успешно клиента с MySQL сървър

  2. Как да използвам Spring JdbcTemplate за свързване към обикновена база данни MySql?

  3. Codeigniter - множество връзки към база данни

  4. Как да нулирате паролата на MySQL root

  5. Инсталиране на pdo_mysql на Amazon EC2 с PHP 5.5