Пример #1
0
 public function execute($bindValues = array(), $additionalParameters = array(), $query = null)
 {
     $query = $this->getQuery();
     $blobs = $this->blobs;
     if (!empty($blobs) && ($this->isInsert() || $this->isUpdate())) {
         $cols = array();
         $hlds = array();
         foreach ($blobs as $column => $blob) {
             $cols[] = $column;
             $hlds[] = ":" . $column;
             $this->bindValues[$column] = $blob;
         }
         $query .= " RETURNING " . implode(", ", $cols) . " INTO " . implode(", ", $hlds);
     }
     $this->query = $query;
     $result = parent::execute($bindValues, $additionalParameters);
     if (!empty($blobs) && ($this->isInsert() || $this->isUpdate())) {
         foreach ($blobs as $blob) {
             $blob->unlink();
         }
     }
     if (!$this->isSelect() || empty($result)) {
         return $result;
     }
     // FETCH LOB CONTENTS
     $lobColumns = array();
     foreach ($this->metadata->getColumns() as $column) {
         if ($column->isText() || $column->isBinary()) {
             $lobColumns[] = $column->name;
         }
     }
     if (!empty($lobColumns)) {
         foreach ($result as &$row) {
             foreach ($lobColumns as $colName) {
                 if (isset($row[$colName])) {
                     $row[$colName] = stream_get_contents($row[$colName]);
                 }
             }
         }
     }
     return $result;
 }
Пример #2
0
 public function execute($bindValues = array(), $additionalParameters = array(), $query = null)
 {
     $result = parent::execute($bindValues, $additionalParameters);
     if (!$this->isSelect() || empty($result)) {
         return $result;
     }
     // PDO_PGSQL BYTEA HACK
     $binColumns = array();
     foreach ($this->metadata->getColumns() as $column) {
         if ($column->isBinary()) {
             $binColumns[] = $column->name;
         }
     }
     if (!empty($binColumns)) {
         foreach ($result as &$row) {
             foreach ($binColumns as $colName) {
                 if (isset($row[$colName])) {
                     $row[$colName] = stream_get_contents($row[$colName]);
                 }
             }
         }
     }
     return $result;
 }