PHP Pear MDB2 modülü ile veritabanına binary data kaydetmek ve okumak |
||||||
|
Yine Pear MDB2 modülü ile işlemler yapalım.
Bu sefer veritabanına Binary Data kaydedeceğiz ve okuyacağız.
Pear MDB2 modülü oldukça kullanışlı olması beni bu paketi kullanmaya yönlendirdi.
Daha önce veritabanına Pear Mdb2 modülü ile binary data kaydetme ve okuma işlemlerini anlatmadım.
Projenizde binary data işlemleri yapacağınızı düşünerekten yazımı sizlere paylaşıyorum.
Önce bir form ile dosya yollayacağız ve dosyayı PHP script ile okuyup dosya içeriğini veritabanına gireceğiz. Veritabanına gireceğimiz dosya türü resim olacak. Şimdi binary data gireceğimiz tabloyu kendi veritabanınızda oluşturalım. Binary datamızı tablonun BLOB tipindeki alana gireceğiz. Tablonun yapısı: CREATE TABLE IF NOT EXISTS `images` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(10) COLLATE utf8_bin NOT NULL, `image` blob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;Dosya upload etmek için yazacağımız html body kısmı: // Pear MDB2 modülü ile veritabanına binary data kaydetmek ve okumak <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Dosya (resim) yolu :</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" id="sub" /> </form>Form action değerini upload_file.php yaptık. Bu dosyayı yollayacağımız dosyanın ismi. Şimdi upload_file.php dosyasını oluşturup içine aşağıdaki PHP kodunu kaydedelim: <?php // dosya (resim) tipini kontrol ediyoruz // dosya boyutunu yaklaşık 200 kb (200000/1024) ile sınırlandırıyoruz if ((($_FILES["file"]["type"] == "image/jpeg")) && ($_FILES["file"]["size"] < 200000)) { if ($_FILES["file"]["error"] > 0) { echo "Gönderilen dosya (resim) hatalı."; } else { // gönderilen dosyayi (resmi) açıyoruz $fp= fopen($_FILES["file"]["tmp_name"], 'r'); // dosyayı (resmi) okuyoruz $content = fread($fp, filesize($_FILES["file"]["tmp_name"])); // açtığımız dosyayı (resmi) kapatıyoruz fclose($fp); // dosyanin (resmin) boyutunu alıyoruz $fileSize = $_FILES["file"]["size"]; // mdb2 classını include ediyoruz require_once 'MDB2.php'; // veritabanına bağlanıyoruz $dsn = 'mysql://kullanici:sifre@localhost/veritabani'; // factory pattern ile mdb2 classını yaratıyoruz $mdb2 =& MDB2::factory($dsn); if (PEAR::isError($mdb2)) { die($mdb2->getMessage()); } // veri tipini hazırlıyoruz $types = array('integer', 'text', 'blob'); // prepare işlemini yapıyoruz $sth = $mdb2->prepare('INSERT INTO images VALUES (?, ?, ?)', $types, MDB2_PREPARE_MANIP); $mdb2->setOption('seqcol_name', 'id'); // insert edilecek veriyi hazırlıyoruz $data = array('NEW.id', 'one', $content); $affectedRows = $sth->execute($data); // execute yaptıktan sonra hata olup olmadığını kontrol edyrz if (PEAR::isError($affectedRows)) { echo "INSERT işlemi başarısız!"; } else echo "INSERT işlemi başarılı!"; } } else { echo "Gönderilen dosya (resim) uygun değil"; } ?>Yukarıdaki PHP kodumuzuda önemli olan kısım MDB2 classını oluşturup Insert işlemi için Prepare kullanmamız. Eğer daha önce MDB2 modülü ile veritabanı işlemleri yapmadıysanız pear-mdb2-modülü-ile-insert-select-delete-ve-prepare-işlemleri linkinden inceleyebilirler. Yaptığım testte veritabanına bir kaç tane resim girdim. Resimleri girdikten sonra veritabanın içeriği şu şekilde oldu:
Şimdi bu binary data'yı veritabanından okuyalım. Bunun için yeni bir php dosyası (binarygoster.php) oluşturalım: <?php // Pear MDB2 modülü ile veritabanına binary data kaydetmek ve okumak require_once 'MDB2.php'; // veritabanına bağlanıyoruz $dsn = 'mysql://kullanici:sifre@localhost/veritabani'; // factory pattern ile mdb2 classını yaratıyoruz $mdb2 =& MDB2::factory($dsn); if (PEAR::isError($mdb2)) { die($mdb2->getMessage()); } // sorgumuzu hazırlıyoruz. // Parametremizi hazırlarken parametre tipini ve // (id, title, image) alanların tipini dizi olarak giriyoruz $statement = $mdb2->prepare('SELECT * FROM images WHERE id = ?', array('integer'),array( 'blob')); // id'si 1 olan satırı alması için parametre olarak 1 giriyoruz. $result = $statement->execute(1); $mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC); // sonucu taracıya gönderiyoruz // girdiğim resimler jpeg formatında idi. // Header bilgisini girmemiz şart header('Content-type: image/jpeg'); while ($row = $result->fetchRow()) { echo $row['image']; } ?>Yukarıdaki kodumuzun çıktısı:
Pear MDB2 modülü ile veritabanına Prepare kullanarak veritabanına binary data girdik. Daha sonra binary datayı veritabanından çekip web browsera yolladık. |
||||||
|
||||||
|
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Mysql View Kullanımı
Jquery ile dinamik res ..
Mysql ile Türkçe Karak ..
İş ilanı (Flash ve AS3 ..
Bloğumun Google PageRa ..
Mysql veritabanında Fu ..
Sitenizi ziyaret edenl ..
PHP ile Regular Expres ..
Jquery ile dinamik tab ..
XAMPP Server (Apache, ..
Jquery ile dinamik res ..
Mysql ile Türkçe Karak ..
İş ilanı (Flash ve AS3 ..
Bloğumun Google PageRa ..
Mysql veritabanında Fu ..
Sitenizi ziyaret edenl ..
PHP ile Regular Expres ..
Jquery ile dinamik tab ..
XAMPP Server (Apache, ..
Etiketler
| .net | Ajax | Asp.net | Css | Dinamik | Dönem | Form-tooltip-hazırlamak | Görev | Html-sayfa | İnput | İş | Jquery | Jquery-kütüphanesi | Mysql | Önerdiğim-kitaplar | Örnek | Php | Select | Tablo-oluşturma | Verimli-ve-yararlı | Veritabanı | View | Web | Yazar |arama
Loading

Zülküf Küçüközer
27th August 2009
Pear | Mdb2 modülü | Veritabanı | Php
620
Prepare | İnsert | Binary data
XHTML