用pdo串連oracle資料庫後,擷取多條文章資料,傳回值中包含Resource id,這些內容要怎樣擷取呢?
$data_f = $ocl->query($sql);print_r($data = $data_f->fetchAll(PDO::FETCH_ASSOC));
嘗試這樣,但擷取到的都是最後一條資料的內容
foreach($data as $v){ echo stream_get_contents($v['CONTENT']);}
而用不用fetchAll改用fetch,擷取的條數倒有問題,例如sql語句中取10條,才輸出3條
while($v = $data_f->fetch(PDO::FETCH_ASSOC)){ echo stream_get_contents($v['CONTENT']);}
回複內容:
用pdo串連oracle資料庫後,擷取多條文章資料,傳回值中包含Resource id,這些內容要怎樣擷取呢?
$data_f = $ocl->query($sql);print_r($data = $data_f->fetchAll(PDO::FETCH_ASSOC));
嘗試這樣,但擷取到的都是最後一條資料的內容
foreach($data as $v){ echo stream_get_contents($v['CONTENT']);}
而用不用fetchAll改用fetch,擷取的條數倒有問題,例如sql語句中取10條,才輸出3條
while($v = $data_f->fetch(PDO::FETCH_ASSOC)){ echo stream_get_contents($v['CONTENT']);}
擷取到的都是最後一條資料的內容, 這是一個已知的bug,在php上面有過討論,無解
fetch那裡,是否是因為fetch只返回了一個欄位 ? 我用迴圈fetch的時候,還算是正常的
我目前代碼是:
`
while($row=$pStmt->fetch(PDO::FETCH_ASSOC)){ $clobFields=$this->detectClob($row); if(count($clobFields)>0){ $this->retriveClobRow($row,$clobFields); } $rst[]=$row; } protected function retriveClobRow(&$row,$clobFields){ if(count($clobFields)>0){ foreach($clobFields as $colName){ $row[$colName] =stream_get_contents($row[$colName]); } } } `
總而言之, oracle pdo,就是個小玩具,即使這問題解決了,還有調用 預存程序時輸出參數的問題繞不開。盡量避免使用 oracle pdo。