class StatementPrefetch implements Iterator, StatementInterface (View source)

An implementation of StatementInterface that prefetches all data.

This class behaves very similar to a \PDOStatement but as it always fetches every row it is possible to manipulate those results.

Properties

protected string $queryString

The query string.

protected array $driverOptions

Driver-specific options. Can be used by child classes.

protected Connection $connection

The Drupal database connection object.

protected PDO $pdoConnection

Reference to the PDO connection object for this statement.

protected array $data

Main data store.

protected array $currentRow

The current row, retrieved in \PDO::FETCH_ASSOC format.

protected int $currentKey

The key of the current row.

protected array $columnNames

The list of column names in this result set.

protected int $rowCount

The number of rows affected by the last query.

protected int $resultRowCount

The number of rows in this result set.

protected int $fetchStyle

Holds the current fetch style (which will be used by the next fetch).

protected array $fetchOptions

Holds supplementary current fetch options (which will be used by the next fetch).

protected int $defaultFetchStyle

Holds the default fetch style.

protected array $defaultFetchOptions

Holds supplementary default fetch options.

protected bool $rowCountEnabled

Is rowCount() execution allowed.

Methods

__construct(PDO $pdo_connection, Connection $connection, string $query, array $driver_options = [], bool $row_count_enabled = FALSE)

Constructs a StatementPrefetch object.

__get($name)

Implements the magic __get() method.

__set($name, $value)

Implements the magic __set() method.

string
getConnectionTarget()

{@inheritdoc}

true
execute($args = [], $options = [])

Executes a prepared statement.

throwPDOException()

Throw a PDO Exception based on the last PDO error.

getStatement($query, array|null $args = [])

Grab a PDOStatement object from a given query and its arguments.

The
getQueryString()

Gets the query string of this statement.

setFetchMode($mode, $a1 = NULL, $a2 = [])

Sets the default fetch mode for this statement.

mixed
current()

Return the current row formatted according to the current fetch style.

key()

{@inheritdoc}

rewind()

{@inheritdoc}

next()

{@inheritdoc}

valid()

{@inheritdoc}

The
rowCount()

Returns the number of rows affected by the last SQL statement.

A
fetch($fetch_style = NULL, $cursor_orientation = \PDO::FETCH_ORI_NEXT, $cursor_offset = NULL)

Fetches the next row from a result set.

fetchColumn($index = 0)

No description

A
fetchField($index = 0)

Returns a single field from the next record of a result set.

mixed
fetchObject(string $class_name = NULL, array $constructor_arguments = NULL)

Fetches the next row and returns it as an object.

An
fetchAssoc()

Fetches the next row and returns it as an associative array.

An
fetchAll($mode = NULL, $column_index = NULL, $constructor_arguments = NULL)

Returns an array containing all of the result set rows.

An
fetchCol($index = 0)

Returns an entire single column of a result set as an indexed array.

An
fetchAllKeyed($key_index = 0, $value_index = 1)

Returns the entire result set as a single associative array.

An
fetchAllAssoc($key, $fetch_style = NULL)

Returns the result set as an associative array keyed by the given field.

Details

__construct(PDO $pdo_connection, Connection $connection, string $query, array $driver_options = [], bool $row_count_enabled = FALSE)

Constructs a StatementPrefetch object.

Parameters

PDO $pdo_connection

An object of the PDO class representing a database connection.

Connection $connection

The database connection.

string $query

The query string.

array $driver_options

Driver-specific options.

bool $row_count_enabled

(optional) Enables counting the rows affected. Defaults to FALSE.

__get($name)

Implements the magic __get() method.

Remove the method before Drupal 10.

Parameters

$name

See also

https://www.drupal.org/i/3210310

__set($name, $value)

Implements the magic __set() method.

Remove the method before Drupal 10.

Parameters

$name
$value

See also

https://www.drupal.org/i/3210310

string getConnectionTarget()

{@inheritdoc}

Return Value

string

true execute($args = [], $options = [])

Executes a prepared statement.

Parameters

$args

An array of values with as many elements as there are bound parameters in the SQL statement being executed. This can be NULL.

$options

An array of options for this query.

Return Value

true

on success, or FALSE on failure.

protected throwPDOException()

Throw a PDO Exception based on the last PDO error.

protected PDOStatement getStatement($query, array|null $args = [])

Grab a PDOStatement object from a given query and its arguments.

Some drivers (including SQLite) will need to perform some preparation themselves to get the statement right.

Parameters

$query

The query.

array|null $args

An array of arguments. This can be NULL.

Return Value

PDOStatement

A PDOStatement object.

The getQueryString()

Gets the query string of this statement.

Return Value

The

query string, in its form with placeholders.

setFetchMode($mode, $a1 = NULL, $a2 = [])

Sets the default fetch mode for this statement.

See http://php.net/manual/pdo.constants.php for the definition of the constants used.

Parameters

$mode

One of the PDO::FETCH_* constants.

$a1

An option depending of the fetch mode specified by $mode:

  • for PDO::FETCH_COLUMN, the index of the column to fetch
  • for PDO::FETCH_CLASS, the name of the class to create
  • for PDO::FETCH_INTO, the object to add the data to
$a2

If $mode is PDO::FETCH_CLASS, the optional arguments to pass to the constructor.

mixed current()

Return the current row formatted according to the current fetch style.

This is the core method of this class. It grabs the value at the current array position in $this->data and format it according to $this->fetchStyle and $this->fetchMode.

Return Value

mixed

The current row formatted as requested.

key()

{@inheritdoc}

rewind()

{@inheritdoc}

next()

{@inheritdoc}

valid()

{@inheritdoc}

The rowCount()

Returns the number of rows affected by the last SQL statement.

Return Value

The

number of rows affected by the last DELETE, INSERT, or UPDATE statement executed or throws \Drupal\Core\Database\RowCountException if the last executed statement was SELECT.

Exceptions

RowCountException

A fetch($fetch_style = NULL, $cursor_orientation = \PDO::FETCH_ORI_NEXT, $cursor_offset = NULL)

Fetches the next row from a result set.

See http://php.net/manual/pdo.constants.php for the definition of the constants used.

Parameters

$fetch_style
$cursor_orientation

Not implemented in all database drivers, don't use.

$cursor_offset

Not implemented in all database drivers, don't use.

Return Value

A

result, formatted according to $mode.

fetchColumn($index = 0)

No description

Parameters

$index

A fetchField($index = 0)

Returns a single field from the next record of a result set.

Parameters

$index

The numeric index of the field to return. Defaults to the first field.

Return Value

A

single field from the next record, or FALSE if there is no next record.

mixed fetchObject(string $class_name = NULL, array $constructor_arguments = NULL)

Fetches the next row and returns it as an object.

The object will be of the class specified by StatementInterface::setFetchMode() or stdClass if not specified.

phpcs:disable Drupal.Commenting

Parameters

string $class_name
array $constructor_arguments

Return Value

mixed

The object of specified class or \stdClass if not specified. Returns FALSE or NULL if there is no next row.

An fetchAssoc()

Fetches the next row and returns it as an associative array.

This method corresponds to PDOStatement::fetchObject(), but for associative arrays. For some reason PDOStatement does not have a corresponding array helper method, so one is added.

Return Value

An

associative array, or FALSE if there is no next row.

An fetchAll($mode = NULL, $column_index = NULL, $constructor_arguments = NULL)

Returns an array containing all of the result set rows.

Parameters

$mode

One of the PDO::FETCH_* constants.

$column_index

If $mode is PDO::FETCH_COLUMN, the index of the column to fetch.

$constructor_arguments

If $mode is PDO::FETCH_CLASS, the arguments to pass to the constructor.

Return Value

An

array of results.

An fetchCol($index = 0)

Returns an entire single column of a result set as an indexed array.

Note that this method will run the result set to the end.

Parameters

$index

The index of the column number to fetch.

Return Value

An

indexed array, or an empty array if there is no result set.

An fetchAllKeyed($key_index = 0, $value_index = 1)

Returns the entire result set as a single associative array.

This method is only useful for two-column result sets. It will return an associative array where the key is one column from the result set and the value is another field. In most cases, the default of the first two columns is appropriate.

Note that this method will run the result set to the end.

Parameters

$key_index

The numeric index of the field to use as the array key.

$value_index

The numeric index of the field to use as the array value.

Return Value

An

associative array, or an empty array if there is no result set.

An fetchAllAssoc($key, $fetch_style = NULL)

Returns the result set as an associative array keyed by the given field.

If the given key appears multiple times, later records will overwrite earlier ones.

Parameters

$key

The name of the field on which to index the array.

$fetch_style

Return Value

An

associative array, or an empty array if there is no result set.