2011-01-27 31 views

Respuesta

8

Suponiendo una estructura de tabla de un ID de número entero y una columna de datos BLOB, y asumiendo funciones de MySQL están siendo utilizados para interactuar con la base de datos, que probablemente podría hacer algo como esto:

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

Una palabra de advertencia sin embargo, el almacenamiento de blobs en bases de datos generalmente no se considera la mejor idea, ya que puede causar hinchazón de la tabla y tiene una serie de otros problemas asociados. Un mejor enfoque sería mover el archivo a alguna parte del sistema de archivos donde se puede recuperar, y almacenar la ruta al archivo en la base de datos en lugar del archivo en sí.

Además, se desaconseja utilizar las llamadas a la función mysql_ *, ya que esos métodos están en desuso y realmente no están construidos con versiones de MySQL más nuevas que 4.x en mente. Debería cambiar a mysqli o PDO en su lugar.

ACTUALIZACIÓN: mysql_ * funciones son obsoleta en PHP 5.x y son eliminado por completo en PHP 7! Ahora no tiene más remedio que cambiar a una abstracción de base de datos más moderna (MySQLI, PDO). He decidido dejar la respuesta original intacta anterior por razones históricas, pero en realidad no lo uso

aquí cómo hacerlo con mysqli en el modo de procedimiento:

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

La forma ideal de hacerlo es con declaraciones preparadas de MySQLI/PDO.

+0

Mi código PHP está abajo: $ fileSize = $ _FILES ['userfile'] ['size']; $ fileType = $ _FILES ['userfile'] ['type']; $ fp = fopen ($ tmpName, 'r'); $ content = fread ($ fp, filesize ($ tmpName)); $ content = addslashes ($ content); $ esc = mysql_real_escape_string (file_get_contents ($ fp)); $ query = "INSERTAR EN LA tabla (id, data, Dealid) VALUES (49, \". $ Esc. \ ", 0) "; – xcodemaddy

+0

['mysqli_query()'] (http://php.net/manual/en/mysqli.query.php) que requiere una conexión db para él y como primer parámetro. Me enamoré de este Q & A de alguien que lo usa como posible duplicado. Debe actualizarse para proporcionar la sintaxis adecuada; y esto para futuros visitantes/novatos que no saben cómo funciona todo. –

+0

['mysqli_real_escape_string()'] (http://php.net/manual/en/mysqli.real-escape-string.php) también necesita una conexión db. ¿Puedes hacerme ping una vez que hayas hecho eso Gordon? –

-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)); 
+1

¿Puedes por favor agregar alguna explicación sobre tu código? Visita el centro de ayuda para entender cómo escribir una buena respuesta. –

Cuestiones relacionadas