Index: trunk/kernel/include/adodb/adodb-odbc.inc.php =================================================================== diff -u -N --- trunk/kernel/include/adodb/adodb-odbc.inc.php (revision 13) +++ trunk/kernel/include/adodb/adodb-odbc.inc.php (revision 0) @@ -1,342 +0,0 @@ -haserrorfunctions = ((integer)$v[2])>4; // > PHP 4.0.4 - } - - function ErrorMsg() - { - if ($this->haserrorfunctions) return odbc_errormsg($this->_connectionID); - else return ADODBConnection::ErrorMsg(); - } - function ErrorNo() - { - if ($this->haserrorfunctions) return odbc_error($this->_connectionID); - else return ADODBConnection::ErrorNo(); - } - - - // returns true or false - function _connect($argDSN, $argUsername, $argPassword, $argDatabasename) - { - global $php_errormsg; - - $php_errormsg = ''; - $this->_connectionID = odbc_connect($argDSN,$argUsername,$argPassword,$this->curmode); - $this->_errorMsg = $php_errormsg; - - //if ($this->_connectionID) odbc_autocommit($this->_connectionID,true); - return $this->_connectionID != false; - } - // returns true or false - function _pconnect($argDSN, $argUsername, $argPassword, $argDatabasename) - { - global $php_errormsg; - $php_errormsg = ''; - $this->_connectionID = odbc_pconnect($argDSN,$argUsername,$argPassword,$this->curmode); - $this->_errorMsg = $php_errormsg; - - //if ($this->_connectionID) odbc_autocommit($this->_connectionID,true); - return $this->_connectionID != false; - } - - function BeginTrans() - { - return odbc_autocommit($this->_connectionID,false); - } - - function CommitTrans() - { - $ret = odbc_commit($this->_connectionID); - odbc_autocommit($this->_connectionID,true); - return $ret; - } - - function RollbackTrans() - { - $ret = odbc_rollback($this->_connectionID); - odbc_autocommit($this->_connectionID,true); - return $ret; - } - - /* returns true or false */ - function SelectDB($dbName) { - /* No database selected */ - return false; - } - - function &MetaDatabases() - { - $arr = array(); - return $arr; - } - - function &MetaTables() - { - $qid = odbc_tables($this->_connectionID); - $rs = new ADORecordSet_odbc($qid); - //print_r($rs); - $arr = &$rs->GetArray(); - $rs->Close(); - $arr2 = array(); - for ($i=0; $i < sizeof($arr); $i++) { - if ($arr[$i][2]) $arr2[] = $arr[$i][2]; - } - return $arr2; - } - -/* -/ SQL data type codes / -#define SQL_UNKNOWN_TYPE 0 -#define SQL_CHAR 1 -#define SQL_NUMERIC 2 -#define SQL_DECIMAL 3 -#define SQL_INTEGER 4 -#define SQL_SMALLINT 5 -#define SQL_FLOAT 6 -#define SQL_REAL 7 -#define SQL_DOUBLE 8 -#if (ODBCVER >= 0x0300) -#define SQL_DATETIME 9 -#endif -#define SQL_VARCHAR 12 - -/ One-parameter shortcuts for date/time data types / -#if (ODBCVER >= 0x0300) -#define SQL_TYPE_DATE 91 -#define SQL_TYPE_TIME 92 -#define SQL_TYPE_TIMESTAMP 93 -*/ - function ODBCTypes($t) - { - switch ((integer)$t) { - case 1: - case 12: - case 0: - return 'C'; - case -1: //text - return 'X'; - case -4: //image - return 'B'; - - case 91: - case 11: - return 'D'; - - case 92: - case 93: - case 9: return 'T'; - case 4: - case 5: - case -6: - return 'I'; - - case -11: // uniqidentifier - return 'R'; - case -7: //bit - return 'L'; - - default: - return 'N'; - } - } - - function &MetaColumns($table) - { - $table = strtoupper($table); - - /* // for some reason, cannot view only 1 table with odbc_columns -- bug? - $qid = odbc_tables($this->_connectionID); - $rs = new ADORecordSet_odbc($qid); - if (!$rs) return false; - while (!$rs->EOF) { - if ($table == strtoupper($rs->fields[2])) { - $q = $rs->fields[0]; - $o = $rs->fields[1]; - break; - } - $rs->MoveNext(); - } - $rs->Close(); - - $qid = odbc_columns($this->_connectionID,$q,$o,strtoupper($table),'%'); - */ - $qid = odbc_columns($this->_connectionID); - $rs = new ADORecordSet_odbc($qid); - if (!$rs) return false; - - $retarr = array(); - while (!$rs->EOF) { - if (strtoupper($rs->fields[2]) == $table) { - $fld = new ADODBFieldObject(); - $fld->name = $rs->fields[3]; - $fld->type = $this->ODBCTypes($rs->fields[4]); - $fld->max_length = $rs->fields[7]; - $retarr[strtoupper($fld->name)] = $fld; - } else if (sizeof($retarr)>0) - break; - $rs->MoveNext(); - } - $rs->Close(); //-- crashes 4.03pl1 -- why? - - return $retarr; - } - - - /* returns queryID or false */ - function _query($sql,$inputarr=false) - { - GLOBAL $php_errormsg; - $php_errormsg = ''; - $this->_error = ''; - if ($inputarr) { - $stmtid = odbc_prepare($this->_connectionID,$sql); - if ($stmtid == false) { - $this->_errorMsg = $php_errormsg; - return false; - } - //print_r($inputarr); - if (! odbc_execute($stmtid,$inputarr)) { - @odbc_free_result($stmtid); - return false; - } - - } else - $stmtid = odbc_exec($this->_connectionID,$sql); - - if ($stmtid) { - odbc_binmode($stmtid,$this->binmode); - odbc_longreadlen($stmtid,$this->maxblobsize); - } - $this->_errorMsg = $php_errormsg; - return $stmtid; - } - - - // returns true or false - function _close() - { - return @odbc_close($this->_connectionID); - } - - function _affectedrows() - { - return odbc_num_rows($this->_queryID); - } - -} - -/*-------------------------------------------------------------------------------------- - Class Name: Recordset ---------------------------------------------------------------------------------------*/ - -class ADORecordSet_odbc extends ADORecordSet { - - var $bind = false; - var $databaseType = "odbc"; - var $dataProvider = "odbc"; - - function ADORecordSet_odbc($id) - { - return $this->ADORecordSet($id); - } - - - // returns the field object - function &FetchField($fieldOffset = -1) { - - $off=$fieldOffset+1; // offsets begin at 1 - - $o= new ADODBFieldObject(); - $o->name = @odbc_field_name($this->_queryID,$off); - $o->type = @odbc_field_type($this->_queryID,$off); - $o->max_length = @odbc_field_len($this->_queryID,$off); - - return $o; - } - - /* Use associative array to get fields array */ - function 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 _initrs() - { - $this->_numOfRows = @odbc_num_rows($this->_queryID); - $this->_numOfFields = @odbc_num_fields($this->_queryID); - } - - function _seek($row) - { - return false; - } - - function MoveNext($ignore_fields=false) - { - if ($this->_numOfRows != 0 && !$this->EOF) { - $this->_currentRow++; - $row = 0; - if (odbc_fetch_into($this->_queryID,$row,$this->fields)) return true; - } - $this->EOF = true; - return false; - } - - function _fetch($ignore_fields=false) - { - $row = 0; - return odbc_fetch_into($this->_queryID,$row,$this->fields); - } - - function _close() { - - return @odbc_free_result($this->_queryID); - } - - - -} - -?> \ No newline at end of file