2011-01-27 96 views

回答

8

假设一个整数ID的表结构和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_ *函数调用是不鼓励的,因为这些方法被有效地弃用,并且没有真正用比4.x更新的MySQL版本构建。您应该切换到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编写语句。

+0

我的php代码如下:$ fileSize = $ _FILES ['userfile'] ['size']; $ fileType = $ _FILES ['userfile'] ['type']; $ fp = fopen($ tmpName,'r'); $ content = fread($ fp,filesize($ tmpName)); (49,\“。$ esc。\”,0,$ esc = mysql_real_escape_string(file_get_contents($ fp)); $ query =“INSERT INTO table(id,data,Dealid)VALUES )“; – xcodemaddy 2011-01-27 09:24:05

+0

[`mysqli_query()`](http://php.net/manual/en/mysqli.query.php)需要db连接并作为第一个参数。我从使用它的人身上看到了这个问答,作为可能的重复。应该更新它以提供正确的语法;这对于未来的访问者/新手来说,他们不知道它是如何工作的。 – 2017-04-01 14:46:56

-1
//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)); 
相关问题