2011-01-27 19 views
13

.pdf dosyaları PHP'den BLOB'lar olarak MySQL'e nasıl kaydedilir? Uyarı.pdf dosyalarını PHP kullanarak BLOB'lar olarak MySQL'e nasıl kaydederim?

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

bir kelime: bir tamsayı kimliğinin bir tablo yapısı ve bir damla VERİ sütunu, varsayarsak ve MySQL fonksiyonlarını varsayarak

cevap

8

muhtemelen böyle bir şey yapabileceğini, veritabanı arayüzü için kullanılmaktadır Bununla birlikte, veri tabanlarındaki lekelerin depolanması genellikle masa bloğuna neden olabileceği ve bununla ilişkili bir dizi başka problemleri olduğu için en iyi fikir olarak değerlendirilmez. Daha iyi bir yaklaşım, dosyayı alınabileceği dosya sisteminde bir yere taşımak ve dosyanın yolunu dosya yerine kendi veritabanında saklamak olacaktır. Ayrıca, mysql_ * işlev çağrılarının kullanılması, bu yöntemlerin etkili bir şekilde kullanımdan kaldırıldığı ve gerçekten 4.x'ten daha yeni MySQL sürümleriyle oluşturulmadığı için önerilmemektedir. Bunun yerine mysqli veya PDO'ya geçmelisiniz.

GÜNCELLEME: mysql_ * fonksiyonları PHP 5.x kullanımdan kaldırılmış ve PHP 7 TAMAMEN KALDIRILDI vardır! Artık daha modern bir Veri Tabanı Soyutlama'ya (MySQLI, PDO) geçmek için başka seçeneğiniz yok. Ben tarihsel nedenlerden dolayı bozulmamış yukarıda orijinal cevabı terk etmeye karar verdik ama aslında İşte o

kullanmak prosedürel modda mysqli ile yapmak nasıl yok:

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

yapmanın ideal yolu olduğunu MySQLI/PDO ile hazırlanmış ifadeler.

+0

Benim php kodum aşağıdadır: $ 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)); $ sorgu = "INSERT INTO (ALIŞVERİŞ) tablosu (id, data, Dealid) DEĞERLER (49, \". $ Esc. \ ", 0) "; – xcodemaddy

+0

['mysqli_query()'] (http://php.net/manual/en/mysqli.query.php) bunun için bir db bağlantısı gerektiren ve ilk parametre olarak. Bu soru ve cevapları bir başkası tarafından olası bir kopya olarak kullandım. Doğru sözdizimini sağlamak için güncellenmelidir; Ve bu, herkesin nasıl çalıştığını bilmeyen gelecekteki ziyaretçiler/yeni başlayanlar için. –

+0

['mysqli_real_escape_string()'] (http://php.net/manual/en/mysqli.real-escape-string.php) ayrıca bir db bağlantısına ihtiyaç duyar. Gordon'ı yaptıktan sonra bana ping yapabilir misin? –

-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

Kodunuz hakkında biraz bilgi ekleyebilir misiniz? İyi bir cevabın nasıl yazılacağını anlamak için lütfen yardım merkezini ziyaret edin. –

İlgili konular