|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2008-12-02 08:56 UTC] berlioz at nicematin dot fr
Description:
------------
in PDO_OCI when you retrieve records from a table with a CLOB field using fetchAll(), fetchAll() returns different resource ids but they all contain the same datas from the last record of the set. Other fields are ok.
if you loop with fetch it works fine.
Reproduce code:
---------------
$conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
$stmt=$conn->query('select * from my_table_with_clob');
$records=$stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($records);
foreach($records as $record)
{
echo "my_clob=".stream_get_contents($record['MY_CLOB'])."\n";
}
Expected result:
----------------
my_clob=Data from record 0
my_clob=Data from record 1
my_clob=Data from record 2
my_clob=Data from record 3
my_clob=Data from record 4
Actual result:
--------------
my_clob=Data from record 4
my_clob=Data from record 4
my_clob=Data from record 4
my_clob=Data from record 4
my_clob=Data from record 4
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 23 11:00:02 2025 UTC |
This bug still exist in PHP 5.6.26 Workaround: $result = []; while ($row = $this->pdoStatement->fetch($fetchMode)) { foreach ($row as $name => $value) { if (is_resource($value)) { $row[$name] = stream_get_contents($value); } } $result[] = $row; }This BUG also affects db2(pdo_ibm). Works: $pdo = new PDO("ibm:HOSTNAME=xxx;DATABASE=SAMPLE;PORT=10099", "db2admin", "lookupsc.1"); $val = file_get_contents("fundo1.png"); $stm = $pdo->prepare("UPDATE DB2ADMIN.PICTURES SET IMAGEM = :field_blob"); $stm->bindParam(":field_blob", $val, PDO::PARAM_LOB); $stm->execute(); $stm = $pdo->query("SELECT IMAGEM FROM DB2ADMIN.PICTURES"); foreach($stm->fetch(PDO::FETCH_NUM ) as $row) { $a = stream_get_contents($row); var_dump($a); } Outputs: the binary: string(877) "�PNG IHDR� .... Doesnt't Works: $pdo = new PDO("ibm:HOSTNAME=xxx;DATABASE=SAMPLE;PORT=10099", "db2admin", "lookupsc.1"); $val = file_get_contents("fundo1.png"); $stm = $pdo->prepare("UPDATE DB2ADMIN.PICTURES SET IMAGEM = :field_blob"); $stm->bindParam(":field_blob", $val, PDO::PARAM_LOB); $stm->execute(); $stm = $pdo->query("SELECT IMAGEM FROM DB2ADMIN.PICTURES"); foreach($stm->fetchAll(PDO::FETCH_NUM ) as $row) { $a = stream_get_contents($row[0]); var_dump($a); } Outputs: string(0) ""