मुझे यहाँ एक समाधान मिला है:
https://bugs.php.net/bug.php?id=57095ए>
[2009-08-11 11:27 यूटीसी] लेहरसमैन एट gmail डॉट कॉमराइट:
एक सहकर्मी ने समाधान खोजा। पीडीओ का उपयोग करते हुए ओरेकल में सीएलओबी से निपटने पर, इसे एलओबी के रूप में न मानें। आपको इसे PDO::PARAM_STR के रूप में बाँधना होगा, और इसे स्ट्रिंग की लंबाई देनी होगी (वह चौथा पैरामीटर कुंजी है, यह LONG प्रकार के बारे में एक त्रुटि संदेश के साथ विफल हो जाता है)।
Oracle में CLOB में सफलतापूर्वक सम्मिलित करने का एक उदाहरण यहां दिया गया है:
<?php
/*
CREATE TABLE clob_test (my_clob CLOB)
*/
$big_string = "";
for ($i=0; $i < 10000; $i++)
$big_string .= rand(100000,999999)."\n";
try {
$pdo = new PDO("oci:dbname=TESTDB", "TESTUSER", "TESTPW");
$stmt = $pdo->prepare("INSERT INTO healthbit.clob_test (my_clob) VALUES (:cl)");
$stmt->bindParam(":cl", $big_string, PDO::PARAM_STR, strlen($big_string));
$pdo->beginTransaction();
if (!$stmt->execute()) {
echo "ERROR: ".print_r($stmt->errorInfo())."\n";
$pdo->rollBack();
exit;
}
$pdo->commit();
$stmt = $pdo->prepare("SELECT my_clob FROM healthbit.clob_test");
$stmt->execute();
$row = $stmt->fetch();
$str = "";
while ($tmp = fread($row[0],1024))
$str .= $tmp;
echo strlen($str); // prints 70000
} catch (Exception $e) {
echo "ERROR: ";
echo $e->getMessage();
$pdo->rollBack();
}
मेरे लिए बिल्कुल ठीक काम करता है...