Pada titik tertentu, aplikasi mungkin perlu menyimpan data "besar" di database.
"Besar" biasanya berarti "sekitar 4kb atau lebih", meskipun beberapa database dapat dengan mudah menangani hingga 32kb data sebelum data mencapai "besar". Objek besar mungkin bersifat teks atau biner.
Gunakan kode tipe PDO::PARAM_LOB dalam panggilan PDOStatement::bindParam() atau PDOStatement::bindColumn()) untuk mengaktifkan PDO menggunakan tipe data besar.
PDO::PARAM_LOB memberitahu PDO untuk memetakan data sebagai aliran sehingga dapat dimanipulasi menggunakan PHP Streams API.
Contoh berikut mengikat LOB ke variabel $lob dan kemudian mengirimkannya ke browser menggunakan fpassthru(). Karena LOB mewakili aliran, fungsi seperti fgets(), fread(), dan stream_get_contents() dapat digunakan di dalamnya.
<?php$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');$stmt = $db->prepare("pilih tipe konten, data gambar dari gambar di mana id=?");$stmt- >eksekusi(array($_GET['id']));$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);$stmt->fetch(PDO::FETCH_BOUND);header("Tipe Konten: $type");fpassthru ($lob);?>
Contoh berikut membuka file dan meneruskan pegangan file ke PDO untuk dimasukkan sebagai LOB. PDO memungkinkan database untuk memperoleh konten file dengan cara seefisien mungkin.
<?php$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');$stmt = $db->prepare("masukkan ke dalam gambar (id, tipe konten, data gambar) nilai (?, ?, ?)");$id = get_new_id(); // Panggil fungsi untuk menetapkan ID baru // Asumsikan bahwa unggahan file diproses // Ini bisa dilakukan di PHP Informasi lebih lanjut dapat ditemukan di dokumentasi $fp = fopen($_FILES['file']['tmp_name'], 'rb');$stmt->bindParam(1, $id);$stmt->bindParam(2, $ _FILES['file']['type']);$stmt->bindParam(3, $fp, PDO::PARAM_LOB);$db->beginTransaction();$stmt->execute();$db->commit();?>
Oracle sedikit berbeda untuk memasukkan lob dari file. Penyisipan harus dilakukan setelah transaksi, jika tidak, LOB yang baru dimasukkan akan dikomit secara implisit dengan panjang 0 saat kueri dijalankan:
<?php$db = new PDO('oci:', 'scott', 'tiger');$stmt = $db->prepare("masukkan ke dalam gambar (id, tipe konten, data gambar) " ."VALUES (?, ?, EMPTY_BLOB()) MENGEMBALIKAN data gambar KE ?");$id = get_new_id(); // Memanggil fungsi untuk menetapkan ID baru // Asumsikan menangani unggahan file // Informasi selengkapnya dapat ditemukan di dokumentasi PHP $fp = fopen($_FILES['file']['tmp_name'], 'rb');$stmt->bindParam(1, $id ) ;$stmt->bindParam(2, $_FILES['file']['type']);$stmt->bindParam(3, $fp, PDO::PARAM_LOB);$stmt->beginTransaction();$stmt->execute();$stmt->commit();?>