⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adodb-ibase.inc.php

📁 Typo3, 开源里边最强大的
💻 PHP
📖 第 1 页 / 共 2 页
字号:
				    $fld->type = 'decimal';					$fld->max_length = 15;					$fld->scale = 5;				} else {					$fld->type = 'double';				}				break;			case 35:				if ($dialect3) {				    $fld->type = 'timestamp';				} else {					$fld->type = 'date';				}				break;			case 12:				$fld->type = 'date';				break;			case 13:				$fld->type = 'time';				break;			case 37:				$fld->type = 'varchar';				break;			case 40:				$fld->type = 'cstring';				break;			case 261:				$fld->type = 'blob';				$fld->max_length = -1;				break;		} // switch	}	//OPN STUFF end		// returns array of ADOFieldObjects for current table	function &MetaColumns($table) 	{	global $ADODB_FETCH_MODE;				$save = $ADODB_FETCH_MODE;		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;			$rs = $this->Execute(sprintf($this->metaColumnsSQL,strtoupper($table)));			$ADODB_FETCH_MODE = $save;		$false = false;		if ($rs === false) {			return $false;		}				$retarr = array();		//OPN STUFF start		$dialect3 = ($this->dialect==3 ? true : false);		//OPN STUFF end		while (!$rs->EOF) { //print_r($rs->fields);			$fld = new ADOFieldObject();			$fld->name = trim($rs->fields[0]);			//OPN STUFF start			$this->_ConvertFieldType($fld, $rs->fields[7], $rs->fields[3], $rs->fields[4], $rs->fields[5], $rs->fields[6], $dialect3);			if (isset($rs->fields[1]) && $rs->fields[1]) {				$fld->not_null = true;			}							if (isset($rs->fields[2])) {								$fld->has_default = true;				$d = substr($rs->fields[2],strlen('default '));				switch ($fld->type)				{				case 'smallint':				case 'integer': $fld->default_value = (int) $d; break;				case 'char': 				case 'blob':				case 'text':				case 'varchar': $fld->default_value = (string) substr($d,1,strlen($d)-2); break;				case 'double':				case 'float': $fld->default_value = (float) $d; break;				default: $fld->default_value = $d; break;				}		//	case 35:$tt = 'TIMESTAMP'; break;			}			if ((isset($rs->fields[5])) && ($fld->type == 'blob')) {				$fld->sub_type = $rs->fields[5];			} else {				$fld->sub_type = null;			}			//OPN STUFF end			if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;				else $retarr[strtoupper($fld->name)] = $fld;						$rs->MoveNext();		}		$rs->Close();		if ( empty($retarr)) return $false;		else return $retarr;		}		function BlobEncode( $blob ) 	{		$blobid = ibase_blob_create( $this->_connectionID);		ibase_blob_add( $blobid, $blob );		return ibase_blob_close( $blobid );	}		// since we auto-decode all blob's since 2.42, 	// BlobDecode should not do any transforms	function BlobDecode($blob)	{		return $blob; 	}					// old blobdecode function	// still used to auto-decode all blob's	function _BlobDecode_old( $blob ) 	{		$blobid = ibase_blob_open($this->_connectionID, $blob );		$realblob = ibase_blob_get( $blobid,$this->maxblobsize); // 2nd param is max size of blob -- Kevin Boillet <kevinboillet@yahoo.fr>		while($string = ibase_blob_get($blobid, 8192)){ 			$realblob .= $string; 		}		ibase_blob_close( $blobid );		return( $realblob );	} 		function _BlobDecode( $blob )     {        if  (ADODB_PHPVER >= 0x5000) {            $blob_data = ibase_blob_info($this->_connectionID, $blob );            $blobid = ibase_blob_open($this->_connectionID, $blob );        } else {            $blob_data = ibase_blob_info( $blob );            $blobid = ibase_blob_open( $blob );        }        if( $blob_data[0] > $this->maxblobsize ) {            $realblob = ibase_blob_get($blobid, $this->maxblobsize);            while($string = ibase_blob_get($blobid, 8192)){                $realblob .= $string;             }        } else {            $realblob = ibase_blob_get($blobid, $blob_data[0]);        }        ibase_blob_close( $blobid );        return( $realblob );	}		function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB') 	{ 		$fd = fopen($path,'rb'); 		if ($fd === false) return false; 		$blob_id = ibase_blob_create($this->_connectionID); 				/* fill with data */ 				while ($val = fread($fd,32768)){ 			ibase_blob_add($blob_id, $val); 		} 				/* close and get $blob_id_str for inserting into table */ 		$blob_id_str = ibase_blob_close($blob_id); 				fclose($fd); 		return $this->Execute("UPDATE $table SET $column=(?) WHERE $where",array($blob_id_str)) != false; 	} 		/*		Insert a null into the blob field of the table first.		Then use UpdateBlob to store the blob.				Usage:		 		$conn->Execute('INSERT INTO blobtable (id, blobcol) VALUES (1, null)');		$conn->UpdateBlob('blobtable','blobcol',$blob,'id=1');	*/	function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB') 	{ 	$blob_id = ibase_blob_create($this->_connectionID); 		// ibase_blob_add($blob_id, $val); 		// replacement that solves the problem by which only the first modulus 64K / 	// of $val are stored at the blob field //////////////////////////////////// 	// Thx Abel Berenstein  aberenstein#afip.gov.ar	$len = strlen($val); 	$chunk_size = 32768; 	$tail_size = $len % $chunk_size; 	$n_chunks = ($len - $tail_size) / $chunk_size; 		for ($n = 0; $n < $n_chunks; $n++) { 		$start = $n * $chunk_size; 		$data = substr($val, $start, $chunk_size); 		ibase_blob_add($blob_id, $data); 	} 		if ($tail_size) {		$start = $n_chunks * $chunk_size; 		$data = substr($val, $start, $tail_size); 		ibase_blob_add($blob_id, $data); 	}	// end replacement ///////////////////////////////////////////////////////// 		$blob_id_str = ibase_blob_close($blob_id); 		return $this->Execute("UPDATE $table SET $column=(?) WHERE $where",array($blob_id_str)) != false; 		} 			function OldUpdateBlob($table,$column,$val,$where,$blobtype='BLOB')	{		$blob_id = ibase_blob_create($this->_connectionID);		ibase_blob_add($blob_id, $val);		$blob_id_str = ibase_blob_close($blob_id);		return $this->Execute("UPDATE $table SET $column=(?) WHERE $where",array($blob_id_str)) != false;	}		// Format date column in sql string given an input format that understands Y M D	// Only since Interbase 6.0 - uses EXTRACT	// problem - does not zero-fill the day and month yet	function SQLDate($fmt, $col=false)	{			if (!$col) $col = $this->sysDate;		$s = '';				$len = strlen($fmt);		for ($i=0; $i < $len; $i++) {			if ($s) $s .= '||';			$ch = $fmt[$i];			switch($ch) {			case 'Y':			case 'y':				$s .= "extract(year from $col)";				break;			case 'M':			case 'm':				$s .= "extract(month from $col)";				break;			case 'Q':			case 'q':				$s .= "cast(((extract(month from $col)+2) / 3) as integer)";				break;			case 'D':			case 'd':				$s .= "(extract(day from $col))";				break;			case 'H':			case 'h':			  $s .= "(extract(hour from $col))";			  break;                        			case 'I':			case 'i':			  $s .= "(extract(minute from $col))";			  break;                			case 'S':			case 's':			  $s .= "CAST((extract(second from $col)) AS INTEGER)";			  break;        			default:				if ($ch == '\\') {					$i++;					$ch = substr($fmt,$i,1);				}				$s .= $this->qstr($ch);				break;			}		}		return $s;	}}/*--------------------------------------------------------------------------------------		 Class Name: Recordset--------------------------------------------------------------------------------------*/class ADORecordset_ibase extends ADORecordSet{	var $databaseType = "ibase";	var $bind=false;	var $_cacheType;		function ADORecordset_ibase($id,$mode=false)	{	global $ADODB_FETCH_MODE;				$this->fetchMode = ($mode === false) ? $ADODB_FETCH_MODE : $mode;			$this->ADORecordSet($id);	}	/*		Returns: an object containing field information.			Get column information in the Recordset object. fetchField() can be used in order to obtain information about			fields in a certain query result. If the field offset isn't specified, the next field that wasn't yet retrieved by			fetchField() is retrieved.		*/	function &FetchField($fieldOffset = -1)	{			 $fld = new ADOFieldObject;			 $ibf = ibase_field_info($this->_queryID,$fieldOffset);			 switch (ADODB_ASSOC_CASE) {			 case 2: // the default			 	$fld->name = ($ibf['alias']);				 if (empty($fld->name)) $fld->name = ($ibf['name']);				 break;			 case 0: 				 $fld->name = strtoupper($ibf['alias']);				 if (empty($fld->name)) $fld->name = strtoupper($ibf['name']);				 break;			 case 1: 			 	$fld->name = strtolower($ibf['alias']);				 if (empty($fld->name)) $fld->name = strtolower($ibf['name']);				 break;			 }			 			 $fld->type = $ibf['type'];			 $fld->max_length = $ibf['length'];			 			 /*       This needs to be populated from the metadata */ 			 $fld->not_null = false;			 $fld->has_default = false;			 $fld->default_value = 'null';			 return $fld;	}	function _initrs()	{		$this->_numOfRows = -1;		$this->_numOfFields = @ibase_num_fields($this->_queryID);		// cache types for blob decode check		for ($i=0, $max = $this->_numOfFields; $i < $max; $i++) { 			$f1 = $this->FetchField($i); 			$this->_cacheType[] = $f1->type;		}					}	function _seek($row)	{		return false;	}		function _fetch() 	{		$f = @ibase_fetch_row($this->_queryID); 		if ($f === false) {			$this->fields = false;			return false;		}		// OPN stuff start - optimized		// fix missing nulls and decode blobs automatically			global $ADODB_ANSI_PADDING_OFF;		//$ADODB_ANSI_PADDING_OFF=1;		$rtrim = !empty($ADODB_ANSI_PADDING_OFF);				for ($i=0, $max = $this->_numOfFields; $i < $max; $i++) { 			if ($this->_cacheType[$i]=="BLOB") {				if (isset($f[$i])) { 					$f[$i] = $this->connection->_BlobDecode($f[$i]); 				} else { 					$f[$i] = null; 				} 			} else { 				if (!isset($f[$i])) { 					$f[$i] = null; 				} else if ($rtrim && is_string($f[$i])) {					$f[$i] = rtrim($f[$i]);				}			} 		} 		// OPN stuff end 				$this->fields = $f;		if ($this->fetchMode == ADODB_FETCH_ASSOC) {			$this->fields = &$this->GetRowAssoc(ADODB_ASSOC_CASE);		} else if ($this->fetchMode == ADODB_FETCH_BOTH) {			$this->fields =& array_merge($this->fields,$this->GetRowAssoc(ADODB_ASSOC_CASE));		}		return true;	}	/* Use associative array to get fields array */	function Fields($colname)	{		if ($this->fetchMode & ADODB_FETCH_ASSOC) return $this->fields[$colname];		if (!$this->bind) {			$this->bind = array();			for ($i=0; $i < $this->_numOfFields; $i++) {				$o = $this->FetchField($i);				$this->bind[strtoupper($o->name)] = $i;			}		}				return $this->fields[$this->bind[strtoupper($colname)]];			}		function _close() 	{			return @ibase_free_result($this->_queryID);	}	function MetaType($t,$len=-1,$fieldobj=false)	{		if (is_object($t)) {			$fieldobj = $t;			$t = $fieldobj->type;			$len = $fieldobj->max_length;		}		switch (strtoupper($t)) {		case 'CHAR':			return 'C';					case 'TEXT':		case 'VARCHAR':		case 'VARYING':		if ($len <= $this->blobSize) return 'C';			return 'X';		case 'BLOB':			return 'B';			   		case 'TIMESTAMP':		case 'DATE': return 'D';		case 'TIME': return 'T';				//case 'T': return 'T';				//case 'L': return 'L';		case 'INT': 		case 'SHORT':		case 'INTEGER': return 'I';		default: return 'N';		}	}}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -