亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? adodb-datadict.inc.php

?? 類似youtube的視頻分享網站源碼。有后臺管理系統及模板
?? PHP
字號:
<?php

/**
  V3.40 7 April 2003  (c) 2000-2003 John Lim (jlim@natsoft.com.my). All rights reserved.
  Released under both BSD license and Lesser GPL library license. 
  Whenever there is any discrepancy between the two licenses, 
  the BSD license will take precedence.
	
  Set tabs to 4 for best viewing.
 
 	DOCUMENTATION:
	
		See adodb/tests/test-datadict.php for docs and examples.
*/

class ADODB_DataDict {
	var $connection;
	var $debug = false;
	var $dropTable = "DROP TABLE %s";
	var $addCol = ' ADD';
	var $alterCol = ' ALTER COLUMN';
	var $dropCol = ' DROP COLUMN';
	var $schema = false;
	var $serverInfo = array();
	
	function MetaTables()
	{
		return $this->connection->MetaTables();
	}
	
	function MetaColumns($tab)
	{
		return $this->connection->MetaColumns($tab);
	}
	
	function MetaPrimaryKeys($tab,$owner=false,$intkey=false)
	{
		return $this->connection->MetaPrimaryKeys($tab.$owner,$intkey);
	}
	
	function MetaType($t,$len=-1,$fieldobj=false)
	{
		return ADORecordSet::MetaType($t,$len,$fieldobj);
	}
	
	// Executes the sql array returned by GetTableSQL and GetIndexSQL
	function ExecuteSQLArray($sql, $continueOnError = true)
	{
		$rez = 2;
		$conn = &$this->connection;
		foreach($sql as $line) {
			$ok = $conn->Execute($line);
			if (!$ok) {
				if ($this->debug) ADOConnection::outp($conn->ErrorMsg());
				if (!$continueOnError) return 0;
				$rez = 1;
			}
		}
		return 2;
	}
	
	/*
	 	Returns the actual type given a character code.
		
		C:  varchar
		X:  CLOB (character large object) or largest varchar size if CLOB is not supported
		C2: Multibyte varchar
		X2: Multibyte CLOB
		
		B:  BLOB (binary large object)
		
		D:  Date
		T:  Date-time 
		L:  Integer field suitable for storing booleans (0 or 1)
		I:  Integer
		F:  Floating point number
		N:  Numeric or decimal number
	*/
	
	function ActualType($meta)
	{
		return $meta;
	}
	
	function CreateDatabase($dbname,$options=false)
	{
		$options = $this->_Options($options);
		$s = 'CREATE DATABASE '.$dbname;
		if (isset($options[$this->upperName])) $s .= ' '.$options[$this->upperName];
		$sql[] = $s;
		return $sql;
	}
	
	/*
	 Generates the SQL to create index. Returns an array of sql strings.
	*/
	function CreateIndexSQL($idxname, $tabname, $flds, $idxoptions = false)
	{
		if ($this->schema) $tabname = $this->schema.'.'.$tabname;
		return $this->_IndexSQL($idxname, $tabname, $flds, $this->_Options($idxoptions));
	}
	
	function SetSchema($schema)
	{
		$this->schema = $schema;
	}
	
	function AddColumnSQL($tabname, $flds)
	{	
		if ($this->schema) $tabname = $this->schema.'.'.$tabname;
		$sql = array();
		list($lines,$pkey) = $this->_GenFields($flds);
		foreach($lines as $v) {
			$sql[] = "ALTER TABLE $tabname $this->addCol $v";
		}
		return $sql;
	}
	
	function AlterColumnSQL($tabname, $flds)
	{
		if ($this->schema) $tabname = $this->schema.'.'.$tabname;
		$sql = array();
		list($lines,$pkey) = $this->_GenFields($flds);

		foreach($lines as $v) {
			$sql[] = "ALTER TABLE $tabname $this->alterCol $v";
		}
		return $sql;
	}
	
	function DropColumnSQL($tabname, $flds)
	{
		if ($this->schema) $tabname = $this->schema.'.'.$tabname;
		if (!is_array($flds)) $flds = explode(',',$flds);
		$sql = array();
		foreach($flds as $v) {
			$sql[] = "ALTER TABLE $tabname $this->dropCol $v";
		}
		return $sql;
	}
	
	function DropTableSQL($tabname)
	{
		if ($this->schema) $tabname = $this->schema.'.'.$tabname;
		$sql[] = sprintf($this->dropTable,$tabname);
		return $sql;
	}
	
	/*
	 Generate the SQL to create table. Returns an array of sql strings.
	*/
	function CreateTableSQL($tabname, $flds, $tableoptions=false)
	{
		if (!$tableoptions) $tableoptions = array();
	
		list($lines,$pkey) = $this->_GenFields($flds);
		
		$taboptions = $this->_Options($tableoptions);
		if ($this->schema) $tabname = $this->schema.'.'.$tabname;
		$sql = $this->_TableSQL($tabname,$lines,$pkey,$taboptions);
		
		$tsql = $this->_Triggers($tabname,$taboptions);
		foreach($tsql as $s) $sql[] = $s;
		
		return $sql;
	}
	
	function _GenFields($flds)
	{
		$lines = array();
		$pkey = array();
		foreach($flds as $fld) {
			$fld = _array_change_key_case($fld);
		
			$fname = false;
			$fdefault = false;
			$fautoinc = false;
			$ftype = false;
			$fsize = false;
			$fprec = false;
			$fprimary = false;
			$fnoquote = false;
			$fdefts = false;
			$fdefdate = false;
			$fconstraint = false;
			$fnotnull = false;
			//-----------------
			// Parse attributes
			foreach($fld as $attr => $v) {
				if ($attr == 2 && is_numeric($v)) $attr = 'SIZE';
				else if (is_numeric($attr) && $attr > 1 && !is_numeric($v)) $attr = strtoupper($v);
				
				switch($attr) {
				case '0':
				case 'NAME': 	$fname = $v; break;
				case '1':
				case 'TYPE': 	$ty = $v; $ftype = $this->ActualType(strtoupper($v)); break;
				case 'SIZE': 	$dotat = strpos($v,'.');
								if ($dotat === false) $fsize = $v;
								else {
									$fsize = substr($v,0,$dotat);
									$fprec = substr($v,$dotat+1);
								}
								break;
				case 'AUTOINCREMENT':
				case 'AUTO':	$fautoinc = true; $fnotnull = true; break;
				case 'KEY':
				case 'PRIMARY':	$fprimary = $v; $fnotnull = true; break;
				case 'DEFAULT': $fdefault = $v; break;
				case 'NOTNULL': $fnotnull = $v; break;
				case 'NOQUOTE': $fnoquote = $v; break;
				case 'DEFDATE': $fdefdate = $v; break;
				case 'DEFTIMESTAMP': $fdefts = $v; break;
				case 'CONSTRAINT': $fconstraint = $v; break;
				} //switch
			} // foreach $fld
			
			//--------------------
			// VALIDATE FIELD INFO
			if (!strlen($fname)) {
				if ($this->debug) ADOConnection::outp("Undefined NAME");
				return false;
			}
			
			if (!strlen($ftype)) {
				if ($this->debug) ADOConnection::outp("Undefined TYPE for field '$fname'");
				return false;
			} else
				$ftype = strtoupper($ftype);
			
			$ftype = $this->_GetSize($ftype, $ty, $fsize, $fprec);
			
			if ($fprimary) $pkey[] = $fname;
			
			// some databases do not allow blobs to have defaults
			if ($ty == 'X') $fdefault = false;
			
			//--------------------
			// CONSTRUCT FIELD SQL
			if ($fdefts) {
				if (substr($this->connection->databaseType,0,5) == 'mysql') {
					$ftype = 'TIMESTAMP';
				} else {
					$fdefault = $this->connection->sysTimeStamp;
				}
			} else if ($fdefdate) {
				if (substr($this->connection->databaseType,0,5) == 'mysql') {
					$ftype = 'TIMESTAMP';
				} else {
					$fdefault = $this->connection->sysDate;
				}
			} else if (strlen($fdefault) && !$fnoquote)
				if ($ty == 'C' or $ty == 'X' or 
					( substr($fdefault,0,1) != "'" && !is_numeric($fdefault)))
					if (substr($fdefault,0,1) == ' ' && substr($fdefault,strlen($fdefault)-1) == ' ') 
						$fdefault = trim($fdefault);
					else
						$fdefault = $this->connection->qstr($fdefault);
			$suffix = $this->_CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint);
			
			$fname = str_pad($fname,16);
			$lines[] = "$fname $ftype$suffix";
			
		} // foreach $flds
		
		
		return array($lines,$pkey);
	}
	/*
		 GENERATE THE SIZE PART OF THE DATATYPE
			$ftype is the actual type
			$ty is the type defined originally in the DDL
	*/
	function _GetSize($ftype, $ty, $fsize, $fprec)
	{
		if (strlen($fsize) && $ty != 'X' && $ty != 'B') {
			$ftype .= "(".$fsize;
			if ($fprec) $ftype .= ",".$fprec;				
			$ftype .= ')';
		}
		return $ftype;
	}
	
	
	function _TableSQL($tabname,$lines,$pkey,$tableoptions)
	{
		$sql = array();
		
		if (isset($tableoptions['REPLACE'])) $sql[] = sprintf($this->dropTable,$tabname);
		$s = "CREATE TABLE $tabname (\n";
		$s .= implode(",\n", $lines);
		if (sizeof($pkey)>0) {
			$s .= ",\n                 PRIMARY KEY (";
			$s .= implode(", ",$pkey).")";
		}
		if (isset($tableoptions['CONSTRAINTS'])) 
			$s .= "\n".$tableoptions['CONSTRAINTS'];
		
		if (isset($tableoptions[$this->upperName.'_CONSTRAINTS'])) 
			$s .= "\n".$tableoptions[$this->upperName.'_CONSTRAINTS'];
		
		$s .= "\n)";
		if (isset($tableoptions[$this->upperName])) $s .= $tableoptions[$this->upperName];
		$sql[] = $s;
		
		return $sql;
	}
	
	/*
		GENERATE TRIGGERS IF NEEDED
		used when table has auto-incrementing field that is emulated using triggers
	*/
	function _Triggers($tabname,$taboptions)
	{
		return array();
	}
	
	/*
		Sanitize options, so that array elements with no keys are promoted to keys
	*/
	function _Options($opts)
	{
		if (!is_array($opts)) return array();
		$newopts = array();
		foreach($opts as $k => $v) {
			if (is_numeric($k)) $newopts[strtoupper($v)] = $v;
			else $newopts[strtoupper($k)] = $v;
		}
		return $newopts;
	}
}
?>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av中文字幕一区二区三区| 国产精品久久久久久久久久久免费看| 97se亚洲国产综合在线| 国产99一区视频免费| 国产精品一区二区在线看| 精品伊人久久久久7777人| 日韩电影免费一区| 精品一区免费av| 国产69精品久久777的优势| 99久久久免费精品国产一区二区 | 日本精品免费观看高清观看| 成人高清在线视频| 色吊一区二区三区| 欧美男人的天堂一二区| 日韩精品一区二区三区视频播放 | 粉嫩绯色av一区二区在线观看| 国产成+人+日韩+欧美+亚洲| 成人少妇影院yyyy| 色婷婷av久久久久久久| 在线不卡一区二区| 久久久精品国产免费观看同学| 国产亚洲欧美激情| 亚洲综合在线免费观看| 日韩综合小视频| 国产一区二区网址| 成人av电影观看| 欧美欧美午夜aⅴ在线观看| 精品国产sm最大网站免费看| 国产精品麻豆久久久| 日韩综合在线视频| 99热在这里有精品免费| 91精品福利在线一区二区三区 | 亚洲尤物在线视频观看| 麻豆91在线播放| 97成人超碰视| 久久综合色婷婷| 一区二区三区在线影院| 国产一区二区三区四| 欧美午夜精品一区二区三区 | 成人久久18免费网站麻豆| 欧美视频一区二区三区在线观看| 日韩午夜激情电影| 亚洲激情图片一区| 成人免费高清在线观看| 91精品在线观看入口| 综合久久给合久久狠狠狠97色 | 亚洲午夜免费电影| 国产黄色精品网站| 91精品国产免费久久综合| 中文字幕一区不卡| 韩国女主播一区| 欧美日韩国产一级二级| 中文字幕色av一区二区三区| 国内成+人亚洲+欧美+综合在线| 色综合一个色综合| 日本一区二区三区高清不卡| 久久精品国产77777蜜臀| 欧美日韩国产综合草草| 一区二区在线观看免费视频播放| 国产成人在线看| 精品成人一区二区三区四区| 婷婷六月综合亚洲| 欧美精品久久99| 亚洲高清一区二区三区| 欧美日韩一区小说| 一区二区三区精品视频| 91黄色免费观看| 亚洲青青青在线视频| 91蜜桃网址入口| 亚洲色图19p| 一本大道av一区二区在线播放| 亚洲国产精品二十页| 国产凹凸在线观看一区二区| 久久只精品国产| 粗大黑人巨茎大战欧美成人| 国产亚洲一本大道中文在线| 国产精品一级片在线观看| 久久中文字幕电影| 国产91露脸合集magnet| 国产日韩欧美制服另类| 成人免费高清在线| 国产精品久久久久久久久久免费看| 国产xxx精品视频大全| 久久久久综合网| 成人a区在线观看| 亚洲日穴在线视频| 在线观看视频一区二区欧美日韩| 亚洲视频在线一区| 在线不卡中文字幕播放| 寂寞少妇一区二区三区| 久久色中文字幕| 成人av电影在线观看| 亚洲伊人色欲综合网| 欧美一区欧美二区| 黑人巨大精品欧美黑白配亚洲| 久久久久国产精品免费免费搜索| 成人高清av在线| 亚洲小少妇裸体bbw| 日韩欧美高清dvd碟片| 国产99精品视频| 亚洲男人天堂一区| 欧美一卡在线观看| 国产成人精品aa毛片| 亚洲一区二区美女| 日韩一级完整毛片| 成人少妇影院yyyy| 日韩专区在线视频| 中文字幕欧美三区| 欧美男人的天堂一二区| 丰满岳乱妇一区二区三区| 亚洲激情校园春色| 精品国产乱码久久久久久闺蜜| 99久免费精品视频在线观看| 亚洲动漫第一页| 中文av字幕一区| 欧美一级欧美一级在线播放| 国产寡妇亲子伦一区二区| 亚洲123区在线观看| 国产午夜亚洲精品羞羞网站| 在线观看亚洲a| 成人综合婷婷国产精品久久免费| 一区二区激情小说| 国产女人aaa级久久久级| 7777精品伊人久久久大香线蕉完整版| 国产精品系列在线观看| 日韩和的一区二区| 中文字幕日本乱码精品影院| 日韩欧美视频在线| 欧美日韩视频在线第一区| 国产成人在线观看免费网站| 男人的j进女人的j一区| 亚洲品质自拍视频| 欧美精彩视频一区二区三区| 日韩欧美一级二级三级久久久| 色婷婷亚洲婷婷| 成人夜色视频网站在线观看| 久久99精品久久久久久久久久久久 | 日本一区二区在线不卡| 精品国产乱码久久久久久图片 | 91在线丨porny丨国产| 国产麻豆午夜三级精品| 日韩不卡免费视频| 无吗不卡中文字幕| 亚洲一级片在线观看| 亚洲精品菠萝久久久久久久| 国产精品动漫网站| 国产精品美女久久久久久久久久久 | 一区二区三区中文字幕精品精品| 国产精品美女久久福利网站| 国产婷婷色一区二区三区四区| 精品国精品国产| 日韩免费在线观看| 精品成人在线观看| 国产午夜精品久久久久久免费视| 欧美草草影院在线视频| 久久综合国产精品| 久久综合九色综合欧美98| 精品国产免费人成在线观看| 精品国产一区二区三区av性色| 日韩欧美一卡二卡| 久久久精品人体av艺术| 久久九九久精品国产免费直播| 国产无人区一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 久久久亚洲欧洲日产国码αv| 欧美成人激情免费网| 久久久精品影视| 亚洲欧美日韩中文播放 | 国产91高潮流白浆在线麻豆| 成人国产精品免费观看动漫| 91亚洲国产成人精品一区二三| 97se狠狠狠综合亚洲狠狠| 欧美在线观看18| 欧美一区二区久久| 久久精品视频免费观看| 亚洲欧洲日韩综合一区二区| 亚洲伊人色欲综合网| 精品在线一区二区| 色综合天天综合狠狠| 5月丁香婷婷综合| 国产女同互慰高潮91漫画| 亚洲国产一区二区在线播放| 久久国产精品99精品国产| 99久久精品免费看国产免费软件| 欧美日韩一区高清| 久久精品在这里| 性久久久久久久| 成人性生交大片免费看在线播放| 色成人在线视频| 欧美精品一区二| 一区二区三区四区在线免费观看| 美腿丝袜一区二区三区| www.日韩大片| 日韩欧美黄色影院| 亚洲午夜影视影院在线观看| 成人黄色国产精品网站大全在线免费观看 | 韩国一区二区三区| 欧美日韩激情一区| 亚洲欧洲精品一区二区精品久久久| 亚洲一区二区三区四区五区黄 |