Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/lib/adodb/drivers/adodb-ado5.inc.php
Go to the documentation of this file.
00001 <?php
00002 /* 
00003 V5.14 8 Sept 2011  (c) 2000-2011 John Lim (jlim#natsoft.com). All rights reserved.
00004   Released under both BSD license and Lesser GPL library license. 
00005   Whenever there is any discrepancy between the two licenses, 
00006   the BSD license will take precedence. 
00007 Set tabs to 4 for best viewing.
00008   
00009   Latest version is available at http://adodb.sourceforge.net
00010   
00011         Microsoft ADO data driver. Requires ADO. Works only on MS Windows. PHP5 compat version.
00012 */
00013 
00014 // security - hide paths
00015 if (!defined('ADODB_DIR')) die();
00016         
00017 define("_ADODB_ADO_LAYER", 1 );
00018 /*--------------------------------------------------------------------------------------
00019 --------------------------------------------------------------------------------------*/
00020 
00021         
00022 class ADODB_ado extends ADOConnection {
00023         var $databaseType = "ado";      
00024         var $_bindInputArray = false;
00025         var $fmtDate = "'Y-m-d'";
00026         var $fmtTimeStamp = "'Y-m-d, h:i:sA'";
00027         var $replaceQuote = "''"; // string to use to replace quotes
00028         var $dataProvider = "ado";      
00029         var $hasAffectedRows = true;
00030         var $adoParameterType = 201; // 201 = long varchar, 203=long wide varchar, 205 = long varbinary
00031         var $_affectedRows = false;
00032         var $_thisTransactions;
00033         var $_cursor_type = 3; // 3=adOpenStatic,0=adOpenForwardOnly,1=adOpenKeyset,2=adOpenDynamic
00034         var $_cursor_location = 3; // 2=adUseServer, 3 = adUseClient;
00035         var $_lock_type = -1;
00036         var $_execute_option = -1;
00037         var $poorAffectedRows = true; 
00038         var $charPage;
00039                 
00040         function ADODB_ado() 
00041         {       
00042                 $this->_affectedRows = new VARIANT;
00043         }
00044 
00045         function ServerInfo()
00046         {
00047                 if (!empty($this->_connectionID)) $desc = $this->_connectionID->provider;
00048                 return array('description' => $desc, 'version' => '');
00049         }
00050         
00051         function _affectedrows()
00052         {
00053                 if (PHP_VERSION >= 5) return $this->_affectedRows;
00054                 
00055                 return $this->_affectedRows->value;
00056         }
00057         
00058         // you can also pass a connection string like this:
00059         //
00060         // $DB->Connect('USER ID=sa;PASSWORD=pwd;SERVER=mangrove;DATABASE=ai',false,false,'SQLOLEDB');
00061         function _connect($argHostname, $argUsername, $argPassword,$argDBorProvider, $argProvider= '')
00062         {
00063         // two modes
00064         //      -       if $argProvider is empty, we assume that $argDBorProvider holds provider -- this is for backward compat
00065         //      -       if $argProvider is not empty, then $argDBorProvider holds db
00066         
00067                 
00068                  if ($argProvider) {
00069                         $argDatabasename = $argDBorProvider;
00070                  } else {
00071                         $argDatabasename = '';
00072                         if ($argDBorProvider) $argProvider = $argDBorProvider;
00073                         else if (stripos($argHostname,'PROVIDER') === false) /* full conn string is not in $argHostname */ 
00074                                 $argProvider = 'MSDASQL';
00075                 }
00076                 
00077                 
00078                 try {
00079                 $u = 'UID';
00080                 $p = 'PWD';
00081         
00082                 if (!empty($this->charPage))
00083                         $dbc = new COM('ADODB.Connection',null,$this->charPage);
00084                 else
00085                         $dbc = new COM('ADODB.Connection');
00086                         
00087                 if (! $dbc) return false;
00088 
00089                 /* special support if provider is mssql or access */
00090                 if ($argProvider=='mssql') {
00091                         $u = 'User Id';  //User parameter name for OLEDB
00092                         $p = 'Password'; 
00093                         $argProvider = "SQLOLEDB"; // SQL Server Provider
00094                         
00095                         // not yet
00096                         //if ($argDatabasename) $argHostname .= ";Initial Catalog=$argDatabasename";
00097                         
00098                         //use trusted conection for SQL if username not specified
00099                         if (!$argUsername) $argHostname .= ";Trusted_Connection=Yes";
00100                 } else if ($argProvider=='access')
00101                         $argProvider = "Microsoft.Jet.OLEDB.4.0"; // Microsoft Jet Provider
00102                 
00103                 if ($argProvider) $dbc->Provider = $argProvider;        
00104 
00105                 if ($argProvider) $argHostname = "PROVIDER=$argProvider;DRIVER={SQL Server};SERVER=$argHostname";       
00106                 
00107 
00108                 if ($argDatabasename) $argHostname .= ";DATABASE=$argDatabasename";             
00109                 if ($argUsername) $argHostname .= ";$u=$argUsername";
00110                 if ($argPassword)$argHostname .= ";$p=$argPassword";
00111                 
00112                 if ($this->debug) ADOConnection::outp( "Host=".$argHostname."<BR>\n version=$dbc->version");
00113                 // @ added below for php 4.0.1 and earlier
00114                 @$dbc->Open((string) $argHostname);
00115                 
00116                 $this->_connectionID = $dbc;
00117                 
00118                 $dbc->CursorLocation = $this->_cursor_location;
00119                 return  $dbc->State > 0;
00120                 } catch (exception $e) {
00121                         if ($this->debug) echo "<pre>",$argHostname,"\n",$e,"</pre>\n";
00122                 }
00123                 
00124                 return false;
00125         }
00126         
00127         // returns true or false
00128         function _pconnect($argHostname, $argUsername, $argPassword, $argProvider='MSDASQL')
00129         {
00130                 return $this->_connect($argHostname,$argUsername,$argPassword,$argProvider);
00131         }       
00132         
00133 /*
00134         adSchemaCatalogs        = 1,
00135         adSchemaCharacterSets   = 2,
00136         adSchemaCollations      = 3,
00137         adSchemaColumns = 4,
00138         adSchemaCheckConstraints        = 5,
00139         adSchemaConstraintColumnUsage   = 6,
00140         adSchemaConstraintTableUsage    = 7,
00141         adSchemaKeyColumnUsage  = 8,
00142         adSchemaReferentialContraints   = 9,
00143         adSchemaTableConstraints        = 10,
00144         adSchemaColumnsDomainUsage      = 11,
00145         adSchemaIndexes = 12,
00146         adSchemaColumnPrivileges        = 13,
00147         adSchemaTablePrivileges = 14,
00148         adSchemaUsagePrivileges = 15,
00149         adSchemaProcedures      = 16,
00150         adSchemaSchemata        = 17,
00151         adSchemaSQLLanguages    = 18,
00152         adSchemaStatistics      = 19,
00153         adSchemaTables  = 20,
00154         adSchemaTranslations    = 21,
00155         adSchemaProviderTypes   = 22,
00156         adSchemaViews   = 23,
00157         adSchemaViewColumnUsage = 24,
00158         adSchemaViewTableUsage  = 25,
00159         adSchemaProcedureParameters     = 26,
00160         adSchemaForeignKeys     = 27,
00161         adSchemaPrimaryKeys     = 28,
00162         adSchemaProcedureColumns        = 29,
00163         adSchemaDBInfoKeywords  = 30,
00164         adSchemaDBInfoLiterals  = 31,
00165         adSchemaCubes   = 32,
00166         adSchemaDimensions      = 33,
00167         adSchemaHierarchies     = 34,
00168         adSchemaLevels  = 35,
00169         adSchemaMeasures        = 36,
00170         adSchemaProperties      = 37,
00171         adSchemaMembers = 38
00172 
00173 */
00174         
00175         function MetaTables()
00176         {
00177                 $arr= array();
00178                 $dbc = $this->_connectionID;
00179                 
00180                 $adors=@$dbc->OpenSchema(20);//tables
00181                 if ($adors){
00182                         $f = $adors->Fields(2);//table/view name
00183                         $t = $adors->Fields(3);//table type
00184                         while (!$adors->EOF){
00185                                 $tt=substr($t->value,0,6);
00186                                 if ($tt!='SYSTEM' && $tt !='ACCESS')
00187                                         $arr[]=$f->value;
00188                                 //print $f->value . ' ' . $t->value.'<br>';
00189                                 $adors->MoveNext();
00190                         }
00191                         $adors->Close();
00192                 }
00193                 
00194                 return $arr;
00195         }
00196         
00197         function MetaColumns($table, $normalize=true)
00198         {
00199                 $table = strtoupper($table);
00200                 $arr= array();
00201                 $dbc = $this->_connectionID;
00202                 
00203                 $adors=@$dbc->OpenSchema(4);//tables
00204         
00205                 if ($adors){
00206                         $t = $adors->Fields(2);//table/view name
00207                         while (!$adors->EOF){
00208                                 
00209                                 
00210                                 if (strtoupper($t->Value) == $table) {
00211                                 
00212                                         $fld = new ADOFieldObject();
00213                                         $c = $adors->Fields(3);
00214                                         $fld->name = $c->Value;
00215                                         $fld->type = 'CHAR'; // cannot discover type in ADO!
00216                                         $fld->max_length = -1;
00217                                         $arr[strtoupper($fld->name)]=$fld;
00218                                 }
00219                 
00220                                 $adors->MoveNext();
00221                         }
00222                         $adors->Close();
00223                 }
00224                 
00225                 return $arr;
00226         }
00227         
00228         /* returns queryID or false */
00229         function _query($sql,$inputarr=false) 
00230         {
00231                 try { // In PHP5, all COM errors are exceptions, so to maintain old behaviour...
00232                 
00233                 $dbc = $this->_connectionID;
00234                 
00235         //      return rs       
00236         
00237                 $false = false;
00238                 
00239                 if ($inputarr) {
00240                         
00241                         if (!empty($this->charPage))
00242                                 $oCmd = new COM('ADODB.Command',null,$this->charPage);
00243                         else
00244                                 $oCmd = new COM('ADODB.Command');
00245                         $oCmd->ActiveConnection = $dbc;
00246                         $oCmd->CommandText = $sql;
00247                         $oCmd->CommandType = 1;
00248 
00249                         while(list(, $val) = each($inputarr)) {
00250                                 $type = gettype($val);
00251                                 $len=strlen($val);
00252                                 if ($type == 'boolean')
00253                                         $this->adoParameterType = 11;
00254                                 else if ($type == 'integer')
00255                                         $this->adoParameterType = 3;
00256                                 else if ($type == 'double')
00257                                         $this->adoParameterType = 5;
00258                                 elseif ($type == 'string')
00259                                         $this->adoParameterType = 202;
00260                                 else if (($val === null) || (!defined($val)))
00261                                         $len=1;
00262                                 else
00263                                         $this->adoParameterType = 130;
00264                                 
00265                                 // name, type, direction 1 = input, len,
00266                         $p = $oCmd->CreateParameter('name',$this->adoParameterType,1,$len,$val);
00267 
00268                                 $oCmd->Parameters->Append($p);
00269                         }
00270                         
00271                         $p = false;
00272                         $rs = $oCmd->Execute();
00273                         $e = $dbc->Errors;
00274                         if ($dbc->Errors->Count > 0) return $false;
00275                         return $rs;
00276                 }
00277                 
00278                 $rs = @$dbc->Execute($sql,$this->_affectedRows, $this->_execute_option);
00279                         
00280                 if ($dbc->Errors->Count > 0) return $false;
00281                 if (! $rs) return $false;
00282                 
00283                 if ($rs->State == 0) {
00284                         $true = true;
00285                         return $true; // 0 = adStateClosed means no records returned
00286                 }
00287                 return $rs;
00288                 
00289                 } catch (exception $e) {
00290                         
00291                 }
00292                 return $false;
00293         }
00294 
00295         
00296         function BeginTrans() 
00297         { 
00298                 if ($this->transOff) return true;
00299                 
00300                 if (isset($this->_thisTransactions))
00301                         if (!$this->_thisTransactions) return false;
00302                 else {
00303                         $o = $this->_connectionID->Properties("Transaction DDL");
00304                         $this->_thisTransactions = $o ? true : false;
00305                         if (!$o) return false;
00306                 }
00307                 @$this->_connectionID->BeginTrans();
00308                 $this->transCnt += 1;
00309                 return true;
00310         }
00311         function CommitTrans($ok=true) 
00312         { 
00313                 if (!$ok) return $this->RollbackTrans();
00314                 if ($this->transOff) return true;
00315                 
00316                 @$this->_connectionID->CommitTrans();
00317                 if ($this->transCnt) @$this->transCnt -= 1;
00318                 return true;
00319         }
00320         function RollbackTrans() {
00321                 if ($this->transOff) return true;
00322                 @$this->_connectionID->RollbackTrans();
00323                 if ($this->transCnt) @$this->transCnt -= 1;
00324                 return true;
00325         }
00326         
00327         /*      Returns: the last error message from previous database operation        */      
00328 
00329         function ErrorMsg() 
00330         {
00331                 if (!$this->_connectionID) return "No connection established";
00332                 $errmsg = '';
00333                 
00334                 try {
00335                         $errc = $this->_connectionID->Errors;
00336                         if (!$errc) return "No Errors object found";
00337                         if ($errc->Count == 0) return '';
00338                         $err = $errc->Item($errc->Count-1);
00339                         $errmsg = $err->Description;
00340                 }catch(exception $e) {
00341                 }
00342                 return $errmsg;
00343         }
00344         
00345         function ErrorNo() 
00346         {
00347                 $errc = $this->_connectionID->Errors;
00348                 if ($errc->Count == 0) return 0;
00349                 $err = $errc->Item($errc->Count-1);
00350                 return $err->NativeError;
00351         }
00352 
00353         // returns true or false
00354         function _close()
00355         {
00356                 if ($this->_connectionID) $this->_connectionID->Close();
00357                 $this->_connectionID = false;
00358                 return true;
00359         }
00360         
00361         
00362 }
00363         
00364 /*--------------------------------------------------------------------------------------
00365          Class Name: Recordset
00366 --------------------------------------------------------------------------------------*/
00367 
00368 class ADORecordSet_ado extends ADORecordSet {   
00369         
00370         var $bind = false;
00371         var $databaseType = "ado";      
00372         var $dataProvider = "ado";      
00373         var $_tarr = false; // caches the types
00374         var $_flds; // and field objects
00375         var $canSeek = true;
00376         var $hideErrors = true;
00377                   
00378         function ADORecordSet_ado($id,$mode=false)
00379         {
00380                 if ($mode === false) { 
00381                         global $ADODB_FETCH_MODE;
00382                         $mode = $ADODB_FETCH_MODE;
00383                 }
00384                 $this->fetchMode = $mode;
00385                 return $this->ADORecordSet($id,$mode);
00386         }
00387 
00388 
00389         // returns the field object
00390         function FetchField($fieldOffset = -1) {
00391                 $off=$fieldOffset+1; // offsets begin at 1
00392                 
00393                 $o= new ADOFieldObject();
00394                 $rs = $this->_queryID;
00395                 if (!$rs) return false;
00396                 
00397                 $f = $rs->Fields($fieldOffset);
00398                 $o->name = $f->Name;
00399                 $t = $f->Type;
00400                 $o->type = $this->MetaType($t);
00401                 $o->max_length = $f->DefinedSize;
00402                 $o->ado_type = $t;
00403                 
00404 
00405                 //print "off=$off name=$o->name type=$o->type len=$o->max_length<br>";
00406                 return $o;
00407         }
00408         
00409         /* Use associative array to get fields array */
00410         function Fields($colname)
00411         {
00412                 if ($this->fetchMode & ADODB_FETCH_ASSOC) return $this->fields[$colname];
00413                 if (!$this->bind) {
00414                         $this->bind = array();
00415                         for ($i=0; $i < $this->_numOfFields; $i++) {
00416                                 $o = $this->FetchField($i);
00417                                 $this->bind[strtoupper($o->name)] = $i;
00418                         }
00419                 }
00420                 
00421                  return $this->fields[$this->bind[strtoupper($colname)]];
00422         }
00423 
00424                 
00425         function _initrs()
00426         {
00427                 $rs = $this->_queryID;
00428                 
00429                 try {
00430                         $this->_numOfRows = $rs->RecordCount;
00431                 } catch (Exception $e) {
00432                         $this->_numOfRows = -1;
00433                 }
00434                 $f = $rs->Fields;
00435                 $this->_numOfFields = $f->Count;
00436         }
00437         
00438         
00439          // should only be used to move forward as we normally use forward-only cursors
00440         function _seek($row)
00441         {
00442            $rs = $this->_queryID; 
00443                 // absoluteposition doesn't work -- my maths is wrong ?
00444                 //      $rs->AbsolutePosition->$row-2;
00445                 //      return true;
00446                 if ($this->_currentRow > $row) return false;
00447                 @$rs->Move((integer)$row - $this->_currentRow-1); //adBookmarkFirst
00448                 return true;
00449         }
00450         
00451 /*
00452         OLEDB types
00453         
00454          enum DBTYPEENUM
00455         {       DBTYPE_EMPTY    = 0,
00456         DBTYPE_NULL     = 1,
00457         DBTYPE_I2       = 2,
00458         DBTYPE_I4       = 3,
00459         DBTYPE_R4       = 4,
00460         DBTYPE_R8       = 5,
00461         DBTYPE_CY       = 6,
00462         DBTYPE_DATE     = 7,
00463         DBTYPE_BSTR     = 8,
00464         DBTYPE_IDISPATCH        = 9,
00465         DBTYPE_ERROR    = 10,
00466         DBTYPE_BOOL     = 11,
00467         DBTYPE_VARIANT  = 12,
00468         DBTYPE_IUNKNOWN = 13,
00469         DBTYPE_DECIMAL  = 14,
00470         DBTYPE_UI1      = 17,
00471         DBTYPE_ARRAY    = 0x2000,
00472         DBTYPE_BYREF    = 0x4000,
00473         DBTYPE_I1       = 16,
00474         DBTYPE_UI2      = 18,
00475         DBTYPE_UI4      = 19,
00476         DBTYPE_I8       = 20,
00477         DBTYPE_UI8      = 21,
00478         DBTYPE_GUID     = 72,
00479         DBTYPE_VECTOR   = 0x1000,
00480         DBTYPE_RESERVED = 0x8000,
00481         DBTYPE_BYTES    = 128,
00482         DBTYPE_STR      = 129,
00483         DBTYPE_WSTR     = 130,
00484         DBTYPE_NUMERIC  = 131,
00485         DBTYPE_UDT      = 132,
00486         DBTYPE_DBDATE   = 133,
00487         DBTYPE_DBTIME   = 134,
00488         DBTYPE_DBTIMESTAMP      = 135
00489         
00490         ADO Types
00491         
00492         adEmpty = 0,
00493         adTinyInt       = 16,
00494         adSmallInt      = 2,
00495         adInteger       = 3,
00496         adBigInt        = 20,
00497         adUnsignedTinyInt       = 17,
00498         adUnsignedSmallInt      = 18,
00499         adUnsignedInt   = 19,
00500         adUnsignedBigInt        = 21,
00501         adSingle        = 4,
00502         adDouble        = 5,
00503         adCurrency      = 6,
00504         adDecimal       = 14,
00505         adNumeric       = 131,
00506         adBoolean       = 11,
00507         adError = 10,
00508         adUserDefined   = 132,
00509         adVariant       = 12,
00510         adIDispatch     = 9,
00511         adIUnknown      = 13,   
00512         adGUID  = 72,
00513         adDate  = 7,
00514         adDBDate        = 133,
00515         adDBTime        = 134,
00516         adDBTimeStamp   = 135,
00517         adBSTR  = 8,
00518         adChar  = 129,
00519         adVarChar       = 200,
00520         adLongVarChar   = 201,
00521         adWChar = 130,
00522         adVarWChar      = 202,
00523         adLongVarWChar  = 203,
00524         adBinary        = 128,
00525         adVarBinary     = 204,
00526         adLongVarBinary = 205,
00527         adChapter       = 136,
00528         adFileTime      = 64,
00529         adDBFileTime    = 137,
00530         adPropVariant   = 138,
00531         adVarNumeric    = 139
00532 */
00533         function MetaType($t,$len=-1,$fieldobj=false)
00534         {
00535                 if (is_object($t)) {
00536                         $fieldobj = $t;
00537                         $t = $fieldobj->type;
00538                         $len = $fieldobj->max_length;
00539                 }
00540                 
00541                 if (!is_numeric($t)) return $t;
00542                 
00543                 switch ($t) {
00544                 case 0:
00545                 case 12: // variant
00546                 case 8: // bstr
00547                 case 129: //char
00548                 case 130: //wc
00549                 case 200: // varc
00550                 case 202:// varWC
00551                 case 128: // bin
00552                 case 204: // varBin
00553                 case 72: // guid
00554                         if ($len <= $this->blobSize) return 'C';
00555                 
00556                 case 201:
00557                 case 203:
00558                         return 'X';
00559                 case 128:
00560                 case 204:
00561                 case 205:
00562                          return 'B';
00563                 case 7:
00564                 case 133: return 'D';
00565                 
00566                 case 134:
00567                 case 135: return 'T';
00568                 
00569                 case 11: return 'L';
00570                 
00571                 case 16://      adTinyInt       = 16,
00572                 case 2://adSmallInt     = 2,
00573                 case 3://adInteger      = 3,
00574                 case 4://adBigInt       = 20,
00575                 case 17://adUnsignedTinyInt     = 17,
00576                 case 18://adUnsignedSmallInt    = 18,
00577                 case 19://adUnsignedInt = 19,
00578                 case 20://adUnsignedBigInt      = 21,
00579                         return 'I';
00580                 default: return 'N';
00581                 }
00582         }
00583         
00584         // time stamp not supported yet
00585         function _fetch()
00586         {       
00587                 $rs = $this->_queryID;
00588                 if (!$rs or $rs->EOF) {
00589                         $this->fields = false;
00590                         return false;
00591                 }
00592                 $this->fields = array();
00593         
00594                 if (!$this->_tarr) {
00595                         $tarr = array();
00596                         $flds = array();
00597                         for ($i=0,$max = $this->_numOfFields; $i < $max; $i++) {
00598                                 $f = $rs->Fields($i);
00599                                 $flds[] = $f;
00600                                 $tarr[] = $f->Type;
00601                         }
00602                         // bind types and flds only once
00603                         $this->_tarr = $tarr; 
00604                         $this->_flds = $flds;
00605                 }
00606                 $t = reset($this->_tarr);
00607                 $f = reset($this->_flds);
00608                 
00609                 if ($this->hideErrors)  $olde = error_reporting(E_ERROR|E_CORE_ERROR);// sometimes $f->value be null
00610                 for ($i=0,$max = $this->_numOfFields; $i < $max; $i++) {
00611                         //echo "<p>",$t,' ';var_dump($f->value); echo '</p>';
00612                         switch($t) {
00613                         case 135: // timestamp
00614                                 if (!strlen((string)$f->value)) $this->fields[] = false;
00615                                 else {
00616                                         if (!is_numeric($f->value)) # $val = variant_date_to_timestamp($f->value);
00617                                                 // VT_DATE stores dates as (float) fractional days since 1899/12/30 00:00:00
00618                                                 $val= (float) variant_cast($f->value,VT_R8)*3600*24-2209161600;
00619                                         else 
00620                                                 $val = $f->value;
00621                                         $this->fields[] = adodb_date('Y-m-d H:i:s',$val);
00622                                 }
00623                                 break;                  
00624                         case 133:// A date value (yyyymmdd) 
00625                                 if ($val = $f->value) {
00626                                         $this->fields[] = substr($val,0,4).'-'.substr($val,4,2).'-'.substr($val,6,2);
00627                                 } else
00628                                         $this->fields[] = false;
00629                                 break;
00630                         case 7: // adDate
00631                                 if (!strlen((string)$f->value)) $this->fields[] = false;
00632                                 else {
00633                                         if (!is_numeric($f->value)) $val = variant_date_to_timestamp($f->value);
00634                                         else $val = $f->value;
00635                                         
00636                                         if (($val % 86400) == 0) $this->fields[] = adodb_date('Y-m-d',$val);
00637                                         else $this->fields[] = adodb_date('Y-m-d H:i:s',$val);
00638                                 }
00639                                 break;
00640                         case 1: // null
00641                                 $this->fields[] = false;
00642                                 break;
00643                         case 20:
00644                         case 21: // bigint (64 bit)
00645                         $this->fields[] = (float) $f->value; // if 64 bit PHP, could use (int)
00646                         break;
00647                         case 6: // currency is not supported properly;
00648                                 ADOConnection::outp( '<b>'.$f->Name.': currency type not supported by PHP</b>');
00649                                 $this->fields[] = (float) $f->value;
00650                                 break;
00651                         case 11: //BIT;
00652                                 $val = "";
00653                                 if(is_bool($f->value))  {
00654                                         if($f->value==true) $val = 1;
00655                                         else $val = 0;
00656                                 }
00657                                 if(is_null($f->value)) $val = null;
00658                                 
00659                                 $this->fields[] = $val;
00660                                 break;
00661                         default:
00662                                 $this->fields[] = $f->value; 
00663                                 break;
00664                         }
00665                         //print " $f->value $t, ";
00666                         $f = next($this->_flds);
00667                         $t = next($this->_tarr);
00668                 } // for
00669                 if ($this->hideErrors) error_reporting($olde);
00670                 @$rs->MoveNext(); // @ needed for some versions of PHP!
00671                 
00672                 if ($this->fetchMode & ADODB_FETCH_ASSOC) {
00673                         $this->fields = $this->GetRowAssoc(ADODB_ASSOC_CASE);
00674                 }
00675                 return true;
00676         }
00677         
00678                 function NextRecordSet()
00679                 {
00680                         $rs = $this->_queryID;
00681                         $this->_queryID = $rs->NextRecordSet();
00682                         //$this->_queryID = $this->_QueryId->NextRecordSet();
00683                         if ($this->_queryID == null) return false;
00684                         
00685                         $this->_currentRow = -1;
00686                         $this->_currentPage = -1;
00687                         $this->bind = false;
00688                         $this->fields = false;
00689                         $this->_flds = false;
00690                         $this->_tarr = false;
00691                         
00692                         $this->_inited = false;
00693                         $this->Init();
00694                         return true;
00695                 }
00696 
00697         function _close() {
00698                 $this->_flds = false;
00699                 try {
00700                 @$this->_queryID->Close();// by Pete Dishman (peterd@telephonetics.co.uk)
00701                 } catch (Exception $e) {
00702                 }
00703                 $this->_queryID = false;        
00704         }
00705 
00706 }
00707 
00708 ?>
 All Data Structures Namespaces Files Functions Variables Enumerations