ADOConnection Class Reference

Inheritance diagram for ADOConnection:

ADODB_ado ADODB_ado ADODB_csv ADODB_db2 ADODB_fbsql ADODB_ibase ADODB_ldap ADODB_mysql ADODB_oci8 ADODB_odbc ADODB_odbtp ADODB_oracle ADODB_pdo ADODB_postgres64 ADODB_sqlite ADODB_sybase List of all members.

Public Member Functions

 ADOConnection ()
 Version ()
 ServerInfo ()
 IsConnected ()
 _findvers ($str)
 outp ($msg, $newline=true)
 Time ()
 Connect ($argHostname="", $argUsername="", $argPassword="", $argDatabaseName="", $forceNew=false)
 _nconnect ($argHostname, $argUsername, $argPassword, $argDatabaseName)
 NConnect ($argHostname="", $argUsername="", $argPassword="", $argDatabaseName="")
 PConnect ($argHostname="", $argUsername="", $argPassword="", $argDatabaseName="")
 SQLDate ($fmt, $col=false)
 Prepare ($sql)
 PrepareSP ($sql, $param=true)
 Quote ($s)
 QMagic ($s)
 q (&$s)
 ErrorNative ()
 nextId ($seq_name)
 RowLock ($table, $where)
 CommitLock ($table)
 RollbackLock ($table)
 SetFetchMode ($mode)
Query ($sql, $inputarr=false)
LimitQuery ($sql, $offset, $count, $params=false)
 Disconnect ()
 Param ($name, $type='C')
 InParameter (&$stmt, &$var, $name, $maxLen=4000, $type=false)
 OutParameter (&$stmt, &$var, $name, $maxLen=4000, $type=false)
 Parameter (&$stmt, &$var, $name, $isOutput=false, $maxLen=4000, $type=false)
 StartTrans ($errfn= 'ADODB_TransMonitor')
 CompleteTrans ($autoComplete=true)
 FailTrans ()
 HasFailedTrans ()
Execute ($sql, $inputarr=false)
_Execute ($sql, $inputarr=false)
 CreateSequence ($seqname='adodbseq', $startID=1)
 DropSequence ($seqname='adodbseq')
 GenID ($seqname='adodbseq', $startID=1)
 Insert_ID ($table='', $column='')
 PO_Insert_ID ($table="", $id="")
 Affected_Rows ()
 ErrorMsg ()
 ErrorNo ()
 MetaError ($err=false)
 MetaErrorMsg ($errno)
 MetaPrimaryKeys ($table, $owner=false)
 MetaForeignKeys ($table, $owner=false, $upper=false)
 SelectDB ($dbName)
SelectLimit ($sql, $nrows=-1, $offset=-1, $inputarr=false, $secs2cache=0)
SerializableRS (&$rs)
_rs2rs (&$rs, $nrows=-1, $offset=-1, $close=true)
GetAll ($sql, $inputarr=false)
GetAssoc ($sql, $inputarr=false, $force_array=false, $first2cols=false)
CacheGetAssoc ($secs2cache, $sql=false, $inputarr=false, $force_array=false, $first2cols=false)
 GetOne ($sql, $inputarr=false)
 CacheGetOne ($secs2cache, $sql=false, $inputarr=false)
 GetCol ($sql, $inputarr=false, $trim=false)
 CacheGetCol ($secs, $sql=false, $inputarr=false, $trim=false)
 OffsetDate ($dayFraction, $date=false)
GetArray ($sql, $inputarr=false)
CacheGetAll ($secs2cache, $sql=false, $inputarr=false)
CacheGetArray ($secs2cache, $sql=false, $inputarr=false)
GetRow ($sql, $inputarr=false)
CacheGetRow ($secs2cache, $sql=false, $inputarr=false)
 Replace ($table, $fieldArray, $keyCol, $autoQuote=false, $has_autoinc=false)
CacheSelectLimit ($secs2cache, $sql, $nrows=-1, $offset=-1, $inputarr=false)
 CacheFlush ($sql=false, $inputarr=false)
 _dirFlush ($dir, $kill_top_level=false)
 xCacheFlush ($sql=false, $inputarr=false)
 _gencachename ($sql, $createdir)
CacheExecute ($secs2cache, $sql=false, $inputarr=false)
AutoExecute ($table, $fields_values, $mode= 'INSERT', $where=FALSE, $forceUpdate=true, $magicq=false)
 GetUpdateSQL (&$rs, $arrFields, $forceUpdate=false, $magicq=false, $force=null)
 GetInsertSQL (&$rs, $arrFields, $magicq=false, $force=null)
 UpdateBlob ($table, $column, $val, $where, $blobtype='BLOB')
 UpdateBlobFile ($table, $column, $path, $where, $blobtype='BLOB')
 BlobDecode ($blob)
 BlobEncode ($blob)
 SetCharSet ($charset)
 IfNull ($field, $ifNull)
 LogSQL ($enable=true)
 GetCharSet ()
 UpdateClob ($table, $column, $val, $where)
 MetaType ($t, $len=-1, $fieldobj=false)
 SetDateLocale ($locale= 'En')
GetActiveRecordsClass ($class, $table, $whereOrderBy=false, $bindarr=false, $primkeyArr=false)
GetActiveRecords ($table, $where=false, $bindarr=false, $primkeyArr=false)
 Close ()
 BeginTrans ()
 CommitTrans ($ok=true)
 RollbackTrans ()
 MetaDatabases ()
MetaTables ($ttype=false, $showSchema=false, $mask=false)
 _findschema (&$table, &$schema)
MetaColumns ($table, $normalize=true)
MetaIndexes ($table, $primary=false, $owner=false)
MetaColumnNames ($table, $numIndexes=false)
 Concat ()
 DBDate ($d)
 DBTimeStamp ($ts)
 UnixDate ($v)
 UnixTimeStamp ($v)
 UserDate ($v, $fmt='Y-m-d', $gmt=false)
 UserTimeStamp ($v, $fmt='Y-m-d H:i:s', $gmt=false)
 escape ($s, $magic_quotes=false)
 addq ($s, $magic_quotes=false)
 qstr ($s, $magic_quotes=false)
PageExecute ($sql, $nrows, $page, $inputarr=false, $secs2cache=0)
CachePageExecute ($secs2cache, $sql, $nrows, $page, $inputarr=false)

Public Attributes

 $dataProvider = 'native'
 $databaseType = ''
 $database = ''
 RDBMS currently in use, eg. odbc, mysql, mssql.
 $host = ''
 Name of database to be used.
 $user = ''
 The hostname of the database server.
 $password = ''
 The username which is used to connect to the database server.
 $debug = false
 Password for the username. For security, we no longer store it.
 $maxblobsize = 262144
 if set to true will output sql statements
 $concat_operator = '+'
 maximum size of blobs or large text fields (262144 = 256K)-- some db's die otherwise like foxpro
 $substr = 'substr'
 default concat operator -- change to || for Oracle/Interbase
 $length = 'length'
 substring operator
 $random = 'rand()'
 string length ofperator
 $upperCase = 'upper'
 random function
 $fmtDate = "'Y-m-d'"
 uppercase function
 $fmtTimeStamp = "'Y-m-d, h:i:s A'"
 used by DBDate() as the default date format used by the database
 $true = '1'
 used by DBTimeStamp as the default timestamp fmt.
 $false = '0'
 string that represents TRUE for a database
 $replaceQuote = "\\'"
 string that represents FALSE for a database
 $nameQuote = '"'
 string to use to replace quotes
 $charSet = false
 string to use to quote identifiers and names
 $metaDatabasesSQL = ''
 character set to use - only for interbase, postgres and oci8
 $metaTablesSQL = ''
 $uniqueOrderBy = false
 $emptyDate = ' '
 All order by columns have to be unique.
 $emptyTimeStamp = ' '
 $lastInsID = false
 $hasInsertID = false
 $hasAffectedRows = false
 supports autoincrement ID?
 $hasTop = false
 supports affected rows for update/delete?
 $hasLimit = false
 support mssql/access SELECT TOP 10 * FROM TABLE
 $readOnly = false
 support pgsql/mysql SELECT * FROM TABLE LIMIT 10
 $hasMoveFirst = false
 this is a readonly database - used by phpLens
 $hasGenID = false
 has ability to run MoveFirst(), scrolling backwards
 $hasTransactions = true
 can generate sequences using GenID();
 $genID = 0
 has transactions
 $raiseErrorFn = false
 sequence id used by GenID();
 $isoDates = false
 error function to call
 $cacheSecs = 3600
 accepts dates in ISO format
 $sysDate = false
 cache for 1 hour
 $sysTimeStamp = false
 name of function that returns the current date
 $arrayClass = 'ADORecordSet_array'
 name of function that returns the current timestamp
 $noNullStrings = false
 name of class used to generate array recordsets, which are pre-downloaded recordsets
 $numCacheHits = 0
 oracle specific stuff - if true ensures that '' is converted to ' '
 $numCacheMisses = 0
 $pageExecuteCountRows = true
 $uniqueSort = false
 $leftOuter = false
 indicates that all fields in order by must be unique
 $rightOuter = false
 operator to use for left outer join in WHERE clause
 $ansiOuter = false
 operator to use for right outer join in WHERE clause
 $autoRollback = false
 whether ansi outer join syntax supported
 $poorAffectedRows = false
 $fnExecute = false
 $fnCacheExecute = false
 $blobEncodeType = false
 $rsPrefix = "ADORecordSet_"
 $autoCommit = true
 $transOff = 0
 do not modify this yourself - actually private
 $transCnt = 0
 temporarily disable transactions
 $fetchMode = false
 count of nested transactions
 $_oldRaiseFn = false
 $_transOK = null
 $_connectionID = false
 $_errorMsg = false
 The returned link identifier whenever a successful database connection is made.
 $_errorCode = false
 then returned by the errorMsg() function
 $_queryID = false
 Last error code, not guaranteed to be used - only by oci8.
 $_isPersistentConnection = false
 This variable keeps the last created result link identifier.
 $_bindInputArray = false
 A boolean variable to state whether its a persistent connection or normal connection. */.
 $_evalAll = false
 set to true if ADOConnection.Execute() permits binding of array parameters.
 $_affected = false
 $_logsql = false

Detailed Description

Connection object. For connecting to databases, and executing queries.

Definition at line 232 of file adodb.inc.php.


Constructor & Destructor Documentation

ADOConnection.ADOConnection  ) 
 

Constructor

Definition at line 321 of file adodb.inc.php.


Member Function Documentation

ADOConnection._dirFlush dir,
kill_top_level = false
 

Private function to erase all of the files and subdirectories in a directory.

Just specify the directory, and tell it if you want to delete the directory or just clear it out. Note: $kill_top_level is used internally in the function to flush subdirectories.

Definition at line 1546 of file adodb.inc.php.

& ADOConnection._Execute sql,
inputarr = false
 

Reimplemented in ADODB_csv, and ADODB_ibase.

Definition at line 863 of file adodb.inc.php.

ADOConnection._findschema &$  table,
&$  schema
 

Definition at line 2121 of file adodb.inc.php.

ADOConnection._findvers str  ) 
 

Definition at line 349 of file adodb.inc.php.

ADOConnection._gencachename sql,
createdir
 

Private function to generate filename for caching. Filename is generated based on:

  • sql statement
  • database type (oci8, ibase, ifx, etc)
  • database name
  • userid
  • setFetchMode (adodb 4.23)

When not in safe mode, we create 256 sub-directories in the cache directory ($ADODB_CACHE_DIR). Assuming that we can have 50,000 files per directory with good performance, then we can scale to 12.8 million unique cached recordsets. Wow!

Definition at line 1606 of file adodb.inc.php.

ADOConnection._nconnect argHostname,
argUsername,
argPassword,
argDatabaseName
 

Reimplemented in ADODB_mysql, ADODB_oci8, and ADODB_postgres64.

Definition at line 432 of file adodb.inc.php.

& ADOConnection._rs2rs &$  rs,
nrows = -1,
offset = -1,
close = true
 

Convert database recordset to an array recordset input recordset's cursor should be at beginning, and old $rs will be closed.

Parameters:
rs the recordset to copy
[nrows] number of rows to retrieve (optional)
[offset] offset by number of rows (optional)
Returns:
the new recordset

Definition at line 1184 of file adodb.inc.php.

ADOConnection.addq s,
magic_quotes = false
 

Quotes a string, without prefixing nor appending quotes.

Definition at line 2388 of file adodb.inc.php.

ADOConnection.Affected_Rows  ) 
 

Returns:
# rows affected by UPDATE/DELETE

Definition at line 995 of file adodb.inc.php.

& ADOConnection.AutoExecute table,
fields_values,
mode = 'INSERT',
where = FALSE,
forceUpdate = true,
magicq = false
 

Definition at line 1732 of file adodb.inc.php.

ADOConnection.BeginTrans  ) 
 

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

Returns:
true if succeeded or false if database does not support transactions

Reimplemented in ADODB_access, ADODB_ado, ADODB_ado, ADODB_ado_access, ADODB_borland_ibase, ADODB_db2, ADODB_ibase, ADODB_mysql, ADODB_mysqlt, ADODB_oci8, ADODB_odbc, ADODB_odbtp, ADODB_oracle, ADODB_pdo, ADODB_postgres64, ADODB_sqlite, ADODB_sybase, and ADODB_vfp.

Definition at line 2017 of file adodb.inc.php.

ADOConnection.BlobDecode blob  ) 
 

Reimplemented in ADODB_ibase.

Definition at line 1856 of file adodb.inc.php.

ADOConnection.BlobEncode blob  ) 
 

Reimplemented in ADODB_ibase, and ADODB_postgres64.

Definition at line 1861 of file adodb.inc.php.

& ADOConnection.CacheExecute secs2cache,
sql = false,
inputarr = false
 

Execute SQL, caching recordsets.

Parameters:
[secs2cache] seconds to cache data, set to 0 to force query. This is an optional parameter.
sql SQL statement to execute
[inputarr] holds the input data to bind to
Returns:
RecordSet or false

Definition at line 1641 of file adodb.inc.php.

ADOConnection.CacheFlush sql = false,
inputarr = false
 

Flush cached recordsets that match a particular $sql statement. If $sql == false, then we purge all files in the cache.

Definition at line 1512 of file adodb.inc.php.

& ADOConnection.CacheGetAll secs2cache,
sql = false,
inputarr = false
 

Definition at line 1373 of file adodb.inc.php.

& ADOConnection.CacheGetArray secs2cache,
sql = false,
inputarr = false
 

Definition at line 1378 of file adodb.inc.php.

& ADOConnection.CacheGetAssoc secs2cache,
sql = false,
inputarr = false,
force_array = false,
first2cols = false
 

Definition at line 1240 of file adodb.inc.php.

ADOConnection.CacheGetCol secs,
sql = false,
inputarr = false,
trim = false
 

Definition at line 1312 of file adodb.inc.php.

ADOConnection.CacheGetOne secs2cache,
sql = false,
inputarr = false
 

Definition at line 1278 of file adodb.inc.php.

& ADOConnection.CacheGetRow secs2cache,
sql = false,
inputarr = false
 

Definition at line 1428 of file adodb.inc.php.

& ADOConnection.CachePageExecute secs2cache,
sql,
nrows,
page,
inputarr = false
 

Will select the supplied $page number from a recordset, given that it is paginated in pages of $nrows rows per page. It also saves two boolean values saying if the given page is the first and/or last one of the recordset. Added by Iván Oliva to provide recordset pagination.

Parameters:
secs2cache seconds to cache data, set to 0 to force query
sql 
nrows is the number of rows per page to get
page is the page number to get (1-based)
[inputarr] array of bind variables
Returns:
the recordset ($rs->databaseType == 'array')

Definition at line 2485 of file adodb.inc.php.

& ADOConnection.CacheSelectLimit secs2cache,
sql,
nrows = -1,
offset = -1,
inputarr = false
 

Will select, getting rows from $offset (1-based), for $nrows. This simulates the MySQL "select * from table limit $offset,$nrows" , and the PostgreSQL "select * from table limit $nrows offset $offset". Note that MySQL and PostgreSQL parameter ordering is the opposite of the other. eg. CacheSelectLimit(15,'select * from table',3); will return rows 1 to 3 (1-based) CacheSelectLimit(15,'select * from table',3,2); will return rows 3 to 5 (1-based)

BUG: Currently CacheSelectLimit fails with $sql with LIMIT or TOP clause already set

Parameters:
[secs2cache] seconds to cache data, set to 0 to force query. This is optional
sql 
[offset] is the row to start calculations from (1-based)
[nrows] is the number of rows to get
[inputarr] array of bind variables
Returns:
the recordset ($rs->databaseType == 'array')

Definition at line 1488 of file adodb.inc.php.

ADOConnection.Close  ) 
 

Close Connection

Definition at line 2005 of file adodb.inc.php.

ADOConnection.CommitLock table  ) 
 

Definition at line 588 of file adodb.inc.php.

ADOConnection.CommitTrans ok = true  ) 
 

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

Parameters:
$ok set to false to rollback transaction, true to commit
Returns:
true/false.

Reimplemented in ADODB_ado, ADODB_ado, ADODB_db2, ADODB_ibase, ADODB_mysqlt, ADODB_oci8, ADODB_odbc, ADODB_odbtp, ADODB_oracle, ADODB_pdo, ADODB_postgres64, ADODB_sqlite, and ADODB_sybase.

Definition at line 2027 of file adodb.inc.php.

ADOConnection.CompleteTrans autoComplete = true  ) 
 

Used together with StartTrans() to end a transaction. Monitors connection for sql errors, and will commit or rollback as appropriate.

if true, monitor sql errors and commit and rollback as appropriate, and if set to false force rollback even if no SQL error detected.

Returns:
true on commit, false on rollback.

Definition at line 735 of file adodb.inc.php.

ADOConnection.Concat  ) 
 

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);

Returns:
concatenated string

Reimplemented in ADODB_fbsql, and ADODB_mysql.

Definition at line 2237 of file adodb.inc.php.

ADOConnection.Connect argHostname = "",
argUsername = "",
argPassword = "",
argDatabaseName = "",
forceNew = false
 

Connect to database

Parameters:
[argHostname] Host to connect to
[argUsername] Userid to login
[argPassword] Associated password
[argDatabaseName] database
[forceNew] force new connection
Returns:
true or false

Definition at line 402 of file adodb.inc.php.

ADOConnection.CreateSequence seqname = 'adodbseq',
startID = 1
 

Reimplemented in ADODB_db2, ADODB_ibase, ADODB_mysql, ADODB_odbc, ADODB_odbtp, and ADODB_sqlite.

Definition at line 912 of file adodb.inc.php.

ADOConnection.DBDate d  ) 
 

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

Parameters: