Как хранить .pdf-файлы в MySQL как BLOB-файлы с помощью PHP?

Как хранить .pdf-файлы в MySQL как BLOB-файлы из PHP?

Related of "Как хранить .pdf-файлы в MySQL как BLOB-файлы с помощью PHP?"

Предполагая структуру таблицы целочисленного идентификатора и столбца DATA blob и предполагая, что функции 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.

UPDATE : функции 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.

 //Pour inserer : $pdf = addslashes(file_get_contents($_FILES['inputname']['tmp_name'])); $filetype = addslashes($_FILES['inputname']['type']);//pour le test $namepdf = addslashes($_FILES['inputname']['name']); if (substr($filetype, 0, 11) == 'application'){ $mysqli->query("insert into tablepdf(pdf_nom,pdf)value('$namepdf','$pdf')"); } //Pour afficher : $row = $mysqli->query("SELECT * FROM tablepdf where id=(select max(id) from tablepdf)"); foreach($row as $result){ $file=$result['pdf']; } header('Content-type: application/pdf'); echo file_get_contents('data:application/pdf;base64,'.base64_encode($file));