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

📄 adodb.inc.php

📁 缺陷管理系统。Apache+PHP+MySQL 支持E-amil功能。是企业级开发中不可或缺的编程管理利器
💻 PHP
📖 第 1 页 / 共 5 页
字号:
	

	function SetCharSet($charset)

	{

		return false;

	}

	

	function IfNull( $field, $ifNull ) 

	{

		return " CASE WHEN $field is null THEN $ifNull ELSE $field END ";

	}

	

	function LogSQL($enable=true)

	{

		include_once(ADODB_DIR.'/adodb-perf.inc.php');

		

		if ($enable) $this->fnExecute = 'adodb_log_sql';

		else $this->fnExecute = false;

		

		$old = $this->_logsql;	

		$this->_logsql = $enable;

		if ($enable && !$old) $this->_affected = false;

		return $old;

	}

	

	function GetCharSet()

	{

		return false;

	}

	

	/**

	* Usage:

	*	UpdateClob('TABLE', 'COLUMN', $var, 'ID=1', 'CLOB');

	*

	*	$conn->Execute('INSERT INTO clobtable (id, clobcol) VALUES (1, null)');

	*	$conn->UpdateClob('clobtable','clobcol',$clob,'id=1');

	*/

	function UpdateClob($table,$column,$val,$where)

	{

		return $this->UpdateBlob($table,$column,$val,$where,'CLOB');

	}

	

	

	/**

	*  Change the SQL connection locale to a specified locale.

	*  This is used to get the date formats written depending on the client locale.

	*/

	function SetDateLocale($locale = 'En')

	{

		$this->locale = $locale;

		switch ($locale)

		{

			default:

			case 'En':

				$this->fmtDate="Y-m-d";

				$this->fmtTimeStamp = "Y-m-d H:i:s";

				break;

	

			case 'Fr':

			case 'Ro':

			case 'It':

				$this->fmtDate="d-m-Y";

				$this->fmtTimeStamp = "d-m-Y H:i:s";

				break;

				

			case 'Ge':

				$this->fmtDate="d.m.Y";

				$this->fmtTimeStamp = "d.m.Y H:i:s";

				break;

		}

	}

	

	

	/**

	 *  $meta	contains the desired type, which could be...

	 *	C for character. You will have to define the precision yourself.

	 *	X for teXt. For unlimited character lengths.

	 *	B for Binary

	 *  F for floating point, with no need to define scale and precision

	 * 	N for decimal numbers, you will have to define the (scale, precision) yourself

	 *	D for date

	 *	T for timestamp

	 * 	L for logical/Boolean

	 *	I for integer

	 *	R for autoincrement counter/integer

	 *  and if you want to use double-byte, add a 2 to the end, like C2 or X2.

	 * 

	 *

	 * @return the actual type of the data or false if no such type available

	*/

 	function ActualType($meta)

	{

		switch($meta) {

		case 'C':

		case 'X':

			return 'VARCHAR';

		case 'B':

			

		case 'D':

		case 'T':

		case 'L':

		

		case 'R':

			

		case 'I':

		case 'N':

			return false;

		}

	}



	

	/**

	 * Close Connection

	 */

	function Close() 

	{

		return $this->_close();

		

		// "Simon Lee" <simon@mediaroad.com> reports that persistent connections need 

		// to be closed too!

		//if ($this->_isPersistentConnection != true) return $this->_close();

		//else return true;	

	}

	

	/**

	 * Begin a Transaction. Must be followed by CommitTrans() or RollbackTrans().

	 *

	 * @return true if succeeded or false if database does not support transactions

	 */

	function BeginTrans() {return false;}

	

	

	/**

	 * If database does not support transactions, always return true as data always commited

	 *

	 * @param $ok  set to false to rollback transaction, true to commit

	 *

	 * @return true/false.

	 */

	function CommitTrans($ok=true) 

	{ return true;}

	

	

	/**

	 * If database does not support transactions, rollbacks always fail, so return false

	 *

	 * @return true/false.

	 */

	function RollbackTrans() 

	{ return false;}





	/**

	 * return the databases that the driver can connect to. 

	 * Some databases will return an empty array.

	 *

	 * @return an array of database names.

	 */

		function MetaDatabases() 

		{

		global $ADODB_FETCH_MODE;

		

			if ($this->metaDatabasesSQL) {

				$save = $ADODB_FETCH_MODE; 

				$ADODB_FETCH_MODE = ADODB_FETCH_NUM; 

				

				if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false);

				

				$arr = $this->GetCol($this->metaDatabasesSQL);

				if (isset($savem)) $this->SetFetchMode($savem);

				$ADODB_FETCH_MODE = $save; 

			

				return $arr;

			}

			

			return false;

		}

		

	/**

	 * @param ttype can either be 'VIEW' or 'TABLE' or false. 

	 * 		If false, both views and tables are returned.

	 *		"VIEW" returns only views

	 *		"TABLE" returns only tables

	 * @param showSchema returns the schema/user with the table name, eg. USER.TABLE

	 * @param mask  is the input mask - only supported by oci8 and postgresql

	 *

	 * @return  array of tables for current database.

	 */ 

	function &MetaTables($ttype=false,$showSchema=false,$mask=false) 

	{

	global $ADODB_FETCH_MODE;

	

		if ($mask) return false;

		

		if ($this->metaTablesSQL) {

			// complicated state saving by the need for backward compat

			$save = $ADODB_FETCH_MODE; 

			$ADODB_FETCH_MODE = ADODB_FETCH_NUM; 

			

			if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false);

			

			$rs = $this->Execute($this->metaTablesSQL);

			if (isset($savem)) $this->SetFetchMode($savem);

			$ADODB_FETCH_MODE = $save; 

			

			if ($rs === false) return false;

			$arr =& $rs->GetArray();

			$arr2 = array();

			

			if ($hast = ($ttype && isset($arr[0][1]))) { 

				$showt = strncmp($ttype,'T',1);

			}

			

			for ($i=0; $i < sizeof($arr); $i++) {

				if ($hast) {

					if ($showt == 0) {

						if (strncmp($arr[$i][1],'T',1) == 0) $arr2[] = trim($arr[$i][0]);

					} else {

						if (strncmp($arr[$i][1],'V',1) == 0) $arr2[] = trim($arr[$i][0]);

					}

				} else

					$arr2[] = trim($arr[$i][0]);

			}

			$rs->Close();

			return $arr2;

		}

		return false;

	}

	

	

	function _findschema(&$table,&$schema)

	{

		if (!$schema && ($at = strpos($table,'.')) !== false) {

			$schema = substr($table,0,$at);

			$table = substr($table,$at+1);

		}

	}

	

	/**

	 * List columns in a database as an array of ADOFieldObjects. 

	 * See top of file for definition of object.

	 *

	 * @param table	table name to query

	 * @param upper	uppercase table name (required by some databases)

	 * @schema is optional database schema to use - not supported by all databases.

	 *

	 * @return  array of ADOFieldObjects for current table.

	 */

	function &MetaColumns($table,$upper=true) 

	{

	global $ADODB_FETCH_MODE;

		

		if (!empty($this->metaColumnsSQL)) {

		

			$schema = false;

			$this->_findschema($table,$schema);

		

			$save = $ADODB_FETCH_MODE;

			$ADODB_FETCH_MODE = ADODB_FETCH_NUM;

			if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false);

			$rs = $this->Execute(sprintf($this->metaColumnsSQL,($upper)?strtoupper($table):$table));

			if (isset($savem)) $this->SetFetchMode($savem);

			$ADODB_FETCH_MODE = $save;

			if ($rs === false) return false;



			$retarr = array();

			while (!$rs->EOF) { //print_r($rs->fields);

				$fld =& new ADOFieldObject();

				$fld->name = $rs->fields[0];

				$fld->type = $rs->fields[1];

				if (isset($rs->fields[3]) && $rs->fields[3]) {

					if ($rs->fields[3]>0) $fld->max_length = $rs->fields[3];

					$fld->scale = $rs->fields[4];

					if ($fld->scale>0) $fld->max_length += 1;

				} else

					$fld->max_length = $rs->fields[2];

					

				if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;	

				else $retarr[strtoupper($fld->name)] = $fld;

				$rs->MoveNext();

			}

			$rs->Close();

			return $retarr;	

		}

		return false;

	}

	

    /**

      * List indexes on a table as an array.

      * @param table        table name to query

      * @param primary include primary keys.

	  *

      * @return array of indexes on current table.

      */

     function &MetaIndexes($table, $primary = false, $owner = false)

     {

             return FALSE;

     }



	/**

	 * List columns names in a table as an array. 

	 * @param table	table name to query

	 *

	 * @return  array of column names for current table.

	 */ 

	function &MetaColumnNames($table) 

	{

		$objarr =& $this->MetaColumns($table);

		if (!is_array($objarr)) return false;

		

		$arr = array();

		foreach($objarr as $v) {

			$arr[strtoupper($v->name)] = $v->name;

		}

		return $arr;

	}

			

	/**

	 * Different SQL databases used different methods to combine strings together.

	 * This function provides a wrapper. 

	 * 

	 * param s	variable number of string parameters

	 *

	 * Usage: $db->Concat($str1,$str2);

	 * 

	 * @return concatenated string

	 */ 	 

	function Concat()

	{	

		$arr = func_get_args();

		return implode($this->concat_operator, $arr);

	}

	

	

	/**

	 * Converts a date "d" to a string that the database can understand.

	 *

	 * @param d	a date in Unix date time format.

	 *

	 * @return  date string in database date format

	 */

	function DBDate($d)

	{

		if (empty($d) && $d !== 0) return 'null';



		if (is_string($d) && !is_numeric($d)) {

			if ($d === 'null' || strncmp($d,"'",1) === 0) return $d;

			if ($this->isoDates) return "'$d'";

			$d = ADOConnection::UnixDate($d);

		}



		return adodb_date($this->fmtDate,$d);

	}

	

	

	/**

	 * Converts a timestamp "ts" to a string that the database can understand.

	 *

	 * @param ts	a timestamp in Unix date time format.

	 *

	 * @return  timestamp string in database timestamp format

	 */

	function DBTimeStamp($ts)

	{

		if (empty($ts) && $ts !== 0) return 'null';



		# strlen(14) allows YYYYMMDDHHMMSS format

		if (!is_string($ts) || (is_numeric($ts) && strlen($ts)<14)) 

			return adodb_date($this->fmtTimeStamp,$ts);

		

		if ($ts === 'null') return $ts;

		if ($this->isoDates && strlen($ts) !== 14) return "'$ts'";

		

		$ts = ADOConnection::UnixTimeStamp($ts);

		return adodb_date($this->fmtTimeStamp,$ts);

	}

	

	/**

	 * Also in ADORecordSet.

	 * @param $v is a date string in YYYY-MM-DD format

	 *

	 * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format

	 */

	function UnixDate($v)

	{

		if (!preg_match( "|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})|", 

			($v), $rr)) return false;



		if ($rr[1] <= TIMESTAMP_FIRST_YEAR) return 0;

		// h-m-s-MM-DD-YY

		return @adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]);

	}

	



	/**

	 * Also in ADORecordSet.

	 * @param $v is a timestamp string in YYYY-MM-DD HH-NN-SS format

	 *

	 * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format

	 */

	function UnixTimeStamp($v)

	{

		if (!preg_match( 

			"|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})[ ,-]*(([0-9]{1,2}):?([0-9]{1,2}):?([0-9\.]{1,4}))?|", 

			($v), $rr)) return false;

			

		if ($rr[1] <= TIMESTAMP_FIRST_YEAR && $rr[2]<= 1) return 0;

	

		// h-m-s-MM-DD-YY

		if (!isset($rr[5])) return  adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]);

		return  @adodb_mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1]);

	}

	

	/**

	 * Also in ADORecordSet.

	 *

	 * Format database date based on user defined format.

	 *

	 * @param v  	is the character date in YYYY-MM-DD format, returned by

⌨️ 快捷键说明

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