Blame | Last modification | View Log | Download
<?php/*V4.80 8 Mar 2006 (c) 2000-2006 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 8.*/class ADODB_pdo_mysql extends ADODB_pdo {var $metaTablesSQL = "SHOW TABLES";var $metaColumnsSQL = "SHOW COLUMNS FROM %s";var $_bindInputArray = false;var $sysDate = 'CURDATE()';var $sysTimeStamp = 'NOW()';function _init($parentDriver){$parentDriver->hasTransactions = false;$parentDriver->_bindInputArray = true;$parentDriver->hasInsertID = true;$parentDriver->_connectionID->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);}function ServerInfo(){$arr['description'] = ADOConnection::GetOne("select version()");$arr['version'] = ADOConnection::_findvers($arr['description']);return $arr;}function &MetaTables($ttype=false,$showSchema=false,$mask=false){$save = $this->metaTablesSQL;if ($showSchema && is_string($showSchema)) {$this->metaTablesSQL .= " from $showSchema";}if ($mask) {$mask = $this->qstr($mask);$this->metaTablesSQL .= " like $mask";}$ret =& ADOConnection::MetaTables($ttype,$showSchema);$this->metaTablesSQL = $save;return $ret;}function &MetaColumns($table){$this->_findschema($table,$schema);if ($schema) {$dbName = $this->database;$this->SelectDB($schema);}global $ADODB_FETCH_MODE;$save = $ADODB_FETCH_MODE;$ADODB_FETCH_MODE = ADODB_FETCH_NUM;if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false);$rs = $this->Execute(sprintf($this->metaColumnsSQL,$table));if ($schema) {$this->SelectDB($dbName);}if (isset($savem)) $this->SetFetchMode($savem);$ADODB_FETCH_MODE = $save;if (!is_object($rs)) {$false = false;return $false;}$retarr = array();while (!$rs->EOF){$fld = new ADOFieldObject();$fld->name = $rs->fields[0];$type = $rs->fields[1];// split type into type(length):$fld->scale = null;if (preg_match("/^(.+)\((\d+),(\d+)/", $type, $query_array)) {$fld->type = $query_array[1];$fld->max_length = is_numeric($query_array[2]) ? $query_array[2] : -1;$fld->scale = is_numeric($query_array[3]) ? $query_array[3] : -1;} elseif (preg_match("/^(.+)\((\d+)/", $type, $query_array)) {$fld->type = $query_array[1];$fld->max_length = is_numeric($query_array[2]) ? $query_array[2] : -1;} elseif (preg_match("/^(enum)\((.*)\)$/i", $type, $query_array)) {$fld->type = $query_array[1];$arr = explode(",",$query_array[2]);$fld->enums = $arr;$zlen = max(array_map("strlen",$arr)) - 2; // PHP >= 4.0.6$fld->max_length = ($zlen > 0) ? $zlen : 1;} else {$fld->type = $type;$fld->max_length = -1;}$fld->not_null = ($rs->fields[2] != 'YES');$fld->primary_key = ($rs->fields[3] == 'PRI');$fld->auto_increment = (strpos($rs->fields[5], 'auto_increment') !== false);$fld->binary = (strpos($type,'blob') !== false);$fld->unsigned = (strpos($type,'unsigned') !== false);if (!$fld->binary) {$d = $rs->fields[4];if ($d != '' && $d != 'NULL') {$fld->has_default = true;$fld->default_value = $d;} else {$fld->has_default = false;}}if ($save == ADODB_FETCH_NUM) {$retarr[] = $fld;} else {$retarr[strtoupper($fld->name)] = $fld;}$rs->MoveNext();}$rs->Close();return $retarr;}// parameters use PostgreSQL convention, not MySQLfunction &SelectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false,$secs=0){$offsetStr =($offset>=0) ? "$offset," : '';// jason judge, see http://phplens.com/lens/lensforum/msgs.php?id=9220if ($nrows < 0) $nrows = '18446744073709551615';if ($secs)$rs =& $this->CacheExecute($secs,$sql." LIMIT $offsetStr$nrows",$inputarr);else$rs =& $this->Execute($sql." LIMIT $offsetStr$nrows",$inputarr);return $rs;}}?>