示例#1
0
文件: db.php 项目: joffilyfe/boca
function DB_lo_read($contest, $id, $s = -1)
{
    if (strcmp(phpversion(), '4.2.0') < 0) {
        if ($s < 0) {
            $str = '';
            while (($buf = pg_loread($id, 100000)) != false) {
                $str .= $buf;
            }
        } else {
            $str = pg_loread($id, $s);
        }
    } else {
        if ($s < 0) {
            $str = '';
            while (($buf = pg_lo_read($id, 100000)) != false) {
                $str .= $buf;
            }
        } else {
            $str = pg_lo_read($id, $s);
        }
    }
    if (($str2 = DB_unlock($contest, $str)) === false) {
        return $str;
    }
    return $str2;
}
 function BlobDecode($blob, $maxsize = false, $hastrans = true)
 {
     if (!$this->GuessOID($blob)) {
         return $blob;
     }
     if ($hastrans) {
         @pg_exec($this->_connectionID, "begin");
     }
     $fd = @pg_lo_open($this->_connectionID, $blob, "r");
     if ($fd === false) {
         if ($hastrans) {
             @pg_exec($this->_connectionID, "commit");
         }
         return $blob;
     }
     if (!$maxsize) {
         $maxsize = $this->maxblobsize;
     }
     $realblob = @pg_loread($fd, $maxsize);
     @pg_loclose($fd);
     if ($hastrans) {
         @pg_exec($this->_connectionID, "commit");
     }
     return $realblob;
 }
示例#3
0
 function ReadResultLOB($lob, &$data, $length)
 {
     if (!$this->RetrieveLOB($lob)) {
         return -1;
     }
     $data = pg_loread($this->lobs[$lob]["Handle"], $length);
     if (GetType($data) != "string") {
         $this->SetError("Read Result LOB", pg_ErrorMessage($this->connection));
         return -1;
     }
     if (($length = strlen($data)) == 0) {
         $this->lobs[$lob]["EndOfLOB"] = 1;
     }
     return $length;
 }
示例#4
0
function DB_lo_read($fp, $len)
{
    if (strcmp(phpversion(), '4.2.0') < 0) {
        return pg_loread($fp, $len);
    } else {
        return pg_lo_read($fp, $len);
    }
}
示例#5
0
 /**
  * Read data from large object input stream.
  *
  * @param int $lob handle to a lob created by the createLob() function
  * @param blob $data reference to a variable that will hold data to be
  *      read from the large object input stream
  * @param int $length integer value that indicates the largest ammount of
  *      data to be read from the large object input stream.
  * @return mixed length on success, a MDB error on failure
  * @access private
  */
 function _readResultLob($lob, &$data, $length)
 {
     $lobresult = $this->_retrieveLob($lob);
     if (MDB::isError($lobresult)) {
         return $lobresult;
     }
     $data = @pg_loread($this->lobs[$lob]['Handle'], $length);
     if (gettype($data) != 'string') {
         $this->raiseError(MDB_ERROR, NULL, NULL, 'Read Result LOB: ' . @pg_errormessage($this->connection));
     }
     if (($length = strlen($data)) == 0) {
         $this->lobs[$lob]['EndOfLOB'] = 1;
     }
     return $length;
 }
示例#6
0
 /**
  * Read data from large object input stream.
  *
  * @param int $lob handle to a lob created by the createLOB() function
  * @param blob $data reference to a variable that will hold data to be
  *      read from the large object input stream
  * @param int $length integer value that indicates the largest ammount of
  *      data to be read from the large object input stream.
  * @return mixed length on success, a MDB2 error on failure
  * @access private
  */
 function _readResultLOB($lob, &$data, $length)
 {
     $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
     $lobresult = $this->_retrieveLOB($lob);
     if (MDB2::isError($lobresult)) {
         return $lobresult;
     }
     $data = @pg_loread($db->lobs[$lob]['handle'], $length);
     if (!is_string($data)) {
         return $db->raiseError();
     }
     if (($length = strlen($data)) == 0) {
         $db->lobs[$lob]['end_of_LOB'] = true;
     }
     return $length;
 }