في مرحلة ما، قد يحتاج التطبيق إلى تخزين البيانات "الكبيرة" في قاعدة البيانات.
تعني كلمة "كبير" عادةً "حوالي 4 كيلو بايت أو أكثر"، على الرغم من أن بعض قواعد البيانات يمكنها بسهولة التعامل مع ما يصل إلى 32 كيلو بايت من البيانات قبل أن تصل البيانات إلى "كبيرة". قد تكون الكائنات الكبيرة نصية أو ثنائية بطبيعتها.
استخدم رمز النوع PDO::PARAM_LOB في استدعاء PDOStatement::bindParam() أو PDOStatement::bindColumn()) لتمكين PDO من استخدام أنواع البيانات الكبيرة.
تطلب شركة PDO::PARAM_LOB من شركة PDO تعيين البيانات كتدفق بحيث يمكن معالجتها باستخدام PHP Streams API.
المثال التالي يربط LOB بالمتغير $lob ثم يستخدم fpassthru() لإرساله إلى المتصفح. نظرًا لأن LOB يمثل مجرى، فيمكن استخدام وظائف مثل fgets() وfread() وstream_get_contents() عليه.
<?php$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');$stmt = $db->prepare("اختر نوع المحتوى، بيانات الصورة من الصور حيث المعرف=؟");$stmt- >تنفيذ(صفيف($_GET['id']));$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);$stmt->fetch(PDO::FETCH_BOUND);header("نوع المحتوى: $type");fpassthru ((لوب)؛؟>
يقوم المثال التالي بفتح ملف وتمرير مؤشر الملف إلى PDO لإدراجه كـ LOB. تسمح شركة PDO لقاعدة البيانات بالحصول على محتويات الملف بأكثر الطرق فعالية.
<?php$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');$stmt = $db->prepare("أدخل في قيم الصور (المعرف، ونوع المحتوى، وبيانات الصورة) (؟, ?, ?)");$id = get_new_id(); // استدعاء دالة لتعيين معرف جديد // افترض أنه تتم معالجة تحميل الملف // يمكن القيام بذلك في 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);$db->beginTransaction();$stmt->execute();$db->commit();?>
تختلف Oracle قليلاً في إدراج ملف lob. يجب أن يتم الإدخال بعد المعاملة، وإلا فسيتم الالتزام ضمنيًا بـ LOB المدرج حديثًا بطول 0 عند تنفيذ الاستعلام:
<?php$db = new PDO('oci:', 'scott', 'tiger');$stmt = $db->prepare("أدخل في الصور (المعرف، نوع المحتوى، بيانات الصورة) " ."VALUES (?, ?, EMPTY_BLOB()) إعادة بيانات الصورة إلى ؟");$id = get_new_id(); // استدعاء دالة لتعيين معرف جديد // افترض التعامل مع تحميل ملف // يمكن العثور على مزيد من المعلومات في وثائق 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();?>