ResultSet Class Reference
[Creole]

Inherited by ResultSetCommon, and SQLiteResultSet.

List of all members.

Public Member Functions


Detailed Description

This is the interface for classes the wrap db results.

The get*() methods in this interface will format values before returning them. Note that if they will return null if the database returned NULL. If the requested column does not exist than an exception (SQLException) will be thrown.

$rs = $conn->executeQuery("SELECT MAX(stamp) FROM event", ResultSet::FETCHMODE_NUM); $rs->next();

$max_stamp = $rs->getTimestamp(1, "d/m/Y H:i:s"); // $max_stamp will be date string or null if no MAX(stamp) was found

$max_stamp = $rs->getTimestamp("max(stamp)", "d/m/Y H:i:s"); // will THROW EXCEPTION, because the resultset was fetched using numeric indexing // SQLException: Invalid resultset column: max(stamp)

This class implements SPL IteratorAggregate, so you may iterate over the database results using foreach(): foreach($rs as $row) { print_r($row); // row is assoc array returned by getRow() }

Author Hans Lellelid <hans@xmpl.org>

Version 

Revision

1.2


Member Function Documentation

ResultSet::FETCHMODE_ASSOC ()

 

Index result set by field name.

ResultSet::FETCHMODE_NUM ()

 

Index result set numerically.

ResultSet::getResource ()

 

Get the PHP native resource for the result. Arguably this should not be part of the interface: i.e. every driver should implement it if they have a result resource, but conceivably drivers could be created that do not. For now every single driver does have a "dblink" resource property, and other classes (e.g. ResultSet) need this info in order to get correct native errors. We'll leave it in for now, as it helps with driver development, with the caveat that it could be removed from the interface at a later point.

Returns resource Query result or NULL if not not applicable.

Reimplemented in ResultSetCommon.

ResultSet::setFetchmode ( $  mode)

 

Sets the fetchmode used to retrieve results. Changing fetchmodes mid-result retrieval is supported (haven't encountered any drivers that don't support that yet).

Parameters:
int $mode ResultSet::FETCHMODE_NUM or ResultSet::FETCHMODE_ASSOC (default).

Returns void

Reimplemented in ResultSetCommon.

ResultSet::getFetchmode ()

 

Gets the fetchmode used to retrieve results.

Returns int ResultSet::FETCHMODE_NUM or ResultSet::FETCHMODE_ASSOC (default).

Reimplemented in ResultSetCommon.

ResultSet::isIgnoreAssocCase ()

 

Whether assoc result keys get left alone -- as opposed to converted to lowercase. If the case change stuff goes back to being more complicated (allowing conver to upper, e.g.) then we'll add new methods but this method will always indicate whether any case conversions should be (or have been) performed at all. This defaults to true unless Creole::NO_ASSOC_LOWER flag has been passed to connection. This property is read-only since it must be set when connection is created. The reason for this behavior is some drivers (e.g. SQLite) do the case conversions internally based on a PHP ini value; it would not be possible to change the behavior from the ResultSet (since query has already been executed).

Returns boolean

Reimplemented in ResultSetCommon.

ResultSet::next ()

 

Moves the internal cursor to the next position and fetches the row at that position.

Returns boolean true if success, false if no next record or SQLException on any driver-level errors.

Reimplemented in MSSQLResultSet, MySQLResultSet, OCI8ResultSet, and PgSQLResultSet.

ResultSet::previous ()

 

Moves the internal cursor to the previous position and fetches the row at that position.

Returns boolean true if success, false if no previous record.

Exceptions:
SQLException - if unable to move to previous position
  • if ResultSet doesn't support reverse scrolling

Reimplemented in ResultSetCommon.

ResultSet::relative ( $  offset)

 

Moves the cursor a relative number of rows, either positive or negative and fetches the row at that position.

Attempting to move beyond the first/last row in the result set positions the cursor before/after the first/last row and issues a Warning. Calling relative(0) is valid, but does not change the cursor position.

Parameters:
integer $offset

Returns boolean true if cursor is on a row, false otherwise.

Exceptions:
SQLException - if unable to move to relative position
  • if rel pos is negative & ResultSet doesn't support reverse scrolling

Reimplemented in ResultSetCommon.

ResultSet::absolute ( $  pos)

 

Moves the cursor to an absolute cursor position and fetches the row at that position.

Attempting to move beyond the first/last row in the result set positions the cursor before/after the first/last row and issues a Warning.

Parameters:
integer $pos cursor position, first position is 1.

Returns boolean true if cursor is on a row, false otherwise.

Exceptions:
SQLException - if unable to move to absolute position
  • if position is before current pos & ResultSet doesn't support reverse scrolling

Reimplemented in ResultSetCommon.

ResultSet::seek ( $  rownum)

 

Moves cursor position WITHOUT FETCHING ROW AT THAT POSITION.

Generally this method is for internal driver stuff (e.g. other methods like absolute() or relative() might call this and then call next() to get the row). This method is public to facilitate more advanced ResultSet scrolling tools -- e.g. cleaner implimentation of ResultSetIterator.

Some drivers will emulate seek() and not allow reverse seek (Oracle).

Seek is 0-based, but seek() is only for moving to the space _before_ the record that you want to read. I.e. if you seek(0) and then call next() you will have the first row (i.e. same as calling first() or absolute(1)).

IMPORTANT: You cannot rely on the return value of this method to know whether a given record exists for reading. In some cases seek() will correctly return false if the position doesn't exist, but in other drivers the seek is not performed until the record is fetched. You can check the return value of absolute() if you need to know whether a specific rec position is valid.

Parameters:
int $rownum The cursor pos to seek to.

Returns boolean true on success, false if unable to seek to specified record.

Exceptions:
SQLException if trying to seek backwards with a driver that doesn't support reverse-scrolling

Reimplemented in MSSQLResultSet, MySQLResultSet, OCI8ResultSet, and PgSQLResultSet.

ResultSet::first ()

 

Move cursor to beginning of recordset.

Returns boolean true on success or false if not found.

Exceptions:
SQLException - if unable to move to first position
  • if not at first pos & ResultSet doesn't support reverse scrolling

Reimplemented in ResultSetCommon.

ResultSet::last ()

 

Move cursor to end of recordset.

Returns boolean true on success or false if not found.

SQLException - if unable to move to last position

  • if unable to get num rows

Reimplemented in ResultSetCommon.

ResultSet::beforeFirst ()

 

Sets cursort to before first record. This does not actually seek(), but simply sets cursor pos to 0. This is useful for inserting a record before the first in the set, etc.

Returns void

Reimplemented in ResultSetCommon.

ResultSet::afterLast ()

 

Sets cursort to after the last record. This does not actually seek(), but simply sets the cursor pos to last + 1. This [will be] useful for inserting a record after the last in the set, when/if Creole supports updateable ResultSets.

Returns TRUE on success, SQLException on error

Reimplemented in ResultSetCommon.

ResultSet::isAfterLast ()

 

Checks whether cursor is after the last record.

Returns boolean

Exceptions:
SQLException on any driver-level error.

Reimplemented in ResultSetCommon.

ResultSet::isBeforeFirst ()

 

Checks whether cursor is before the first record.

Returns boolean

Exceptions:
SQLException on any driver-level error.

Reimplemented in ResultSetCommon.

ResultSet::getCursorPos ()

 

Returns the current cursor position. Cursor positions start at 0, but as soon as first row is fetched cursor position is 1. (so first row is 1)

Returns int

Reimplemented in ResultSetCommon.

ResultSet::getRow ()

 

Gets current fields (assoc array).

Returns array

Reimplemented in ResultSetCommon.

ResultSet::getRecordCount ()

 

Get the number of rows in a result set.

Returns int the number of rows

Exceptions:
SQLException - if unable to get a rowcount.

Reimplemented in MSSQLResultSet, MySQLResultSet, OCI8ResultSet, and PgSQLResultSet.

ResultSet::close ()

 

Frees the resources allocated for this result set. Also empties any internal field array so that any calls to get() method on closed ResultSet will result in "Invalid column" SQLException.

Returns void

Reimplemented in MSSQLResultSet, MySQLResultSet, OCI8ResultSet, and PgSQLResultSet.

ResultSet::get ( $  column)

 

A generic get method returns unformatted (=string) value. This returns the raw results from the database. Usually this will be a string, but some drivers also can return objects (lob descriptors, etc) in certain cases.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used) (if ResultSet::FETCHMODE_NUM was used).

Returns mixed Usually expect a string.

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon.

ResultSet::getArray ( $  column)

 

Reads a column as an array. The value of the column is unserialized & returned as an array. The generic case of this function is very PHP-specific. Other drivers (e.g. Postgres) will format values into their native array format.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).

Returns array value or null if database returned null.

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon, and PgSQLResultSet.

ResultSet::getBoolean ( $  column)

 

Returns value translated to boolean. Default is to map 0 => false, 1 => true, but some database drivers may override this behavior.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).

Returns boolean value or null if database returned null.

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon, and PgSQLResultSet.

ResultSet::getBlob ( $  column)

 

Returns Blob with contents of column value.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).

Returns Blob New Blob with data from column or null if database returned null.

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon, and PgSQLResultSet.

ResultSet::getClob ( $  column)

 

Returns Clob with contents of column value.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).

Returns Clob New Clob object with data from column or null if database returned null.

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon.

ResultSet::getDate ( $  column,  $  format = '%x' )

 

Return a formatted date.

The default format for dates returned is preferred (in your locale, as specified using setlocale()) format w/o time (i.e. strftime("%x", $val)). Override this by specifying a format second parameter. You can also specify a date()-style formatter; if you do, make sure there are no "%" symbols in your format string.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).
string $format Date formatter for use w/ strftime() or date() (it will choose based on examination of format string)

Returns string formatted date or null if database returned null

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon.

ResultSet::getFloat ( $  column)

 

Returns value cast as a float (in PHP this is same as double).

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).

Returns float value or null if database returned null

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon.

ResultSet::getInt ( $  column)

 

Returns value cast as integer.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).

Returns int value or null if database returned null

See also getInteger()

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon.

ResultSet::getString ( $  column)

 

Returns value cast as string.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).

Returns string value or null if database returned null

See also get()

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon, and MySQLResultSet.

ResultSet::getTime ( $  column,  $  format = '%X' )

 

Return a formatted time.

The default format for times returned is preferred (in your locale, as specified using setlocale()) format w/o date (i.e. strftime("%X", $val)). Override this by specifying a format second parameter. You can also specify a date()-style formatter; if you do, make sure there are no "%" symbols in your format string.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).
string $format Date formatter for use w/ strftime() or date() (it will choose based on examination of format string)

Returns string Formatted time or null if database returned null

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon.

ResultSet::getTimestamp ( $  column,  $  format = 'Y-m-d H:i:s' )

 

Return a formatted timestamp.

The default format for timestamp is ISO standard YYYY-MM-DD HH:MM:SS (i.e. date('Y-m-d H:i:s', $val). Override this by specifying a format second parameter. You can also specify a strftime()-style formatter.

Hint: if you want to get the unix timestamp use the "U" formatter string.

Parameters:
mixed $column Column name (string) or index (int) starting with 1 (if ResultSet::FETCHMODE_NUM was used).
string $format Date formatter for use w/ strftime() or date() (it will choose based on examination of format string)

Returns string Formatted timestamp or null if database returned null

Exceptions:
SQLException - If the column specified is not a valid key in current field array.

Reimplemented in ResultSetCommon, and MySQLResultSet.


This file is part of the Creole[php4] library.


Copyright © 2004 Hans Lellelid  
Creole[php4] CVS