如何使用PHP将.pdf文件作为BLOB存储到MySQL中?

xco*_*ddy 17 php mysql pdf

如何将.pdf文件作为BLOB从PHP存储到MySQL中?

Gor*_*onM 12

编辑添加:以下代码已过时,无法在PHP 7中使用.有关详细信息,请参阅答案底部的注释.


假设一个整数ID和一个blob DATA列的表结构,并假设MySQL函数用于与数据库接口,你可能会做这样的事情:

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

但是,在数据库中存储blob通常不被认为是最好的主意,因为它可能导致表膨胀并且还存在许多与之相关的其他问题.更好的方法是将文件移动到可以检索它的文件系统中的某个位置,并将文件的路径存储在数据库中而不是文件本身.

此外,不鼓励使用mysql_*函数调用,因为这些方法实际上已被弃用,并且实际上并未构建为比4.x更新的MySQL版本.你应该切换到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) . '\'
);');
Run Code Online (Sandbox Code Playgroud)

这样做的理想方法是使用MySQLI/PDO编写的语句.