. */ namespace Doctrine\DBAL\Driver; /** * Statement interface. * Drivers must implement this interface. * * This resembles the PDOStatement interface. * * @author Konsta Vesterinen * @author Roman Borschel * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.doctrine-project.org * @since 2.0 * @version $Revision$ */ interface Statement { /** * Bind a column to a PHP variable * * @param mixed $column Number of the column (1-indexed) or name of the column in the result set. * If using the column name, be aware that the name should match * the case of the column, as returned by the driver. * @param string $param Name of the PHP variable to which the column will be bound. * @param integer $type Data type of the parameter, specified by the PDO::PARAM_* constants. * @return boolean Returns TRUE on success or FALSE on failure */ public function bindColumn($column, &$param, $type = null); /** * Binds a value to a corresponding named or positional * placeholder in the SQL statement that was used to prepare the statement. * * @param mixed $param Parameter identifier. For a prepared statement using named placeholders, * this will be a parameter name of the form :name. For a prepared statement * using question mark placeholders, this will be the 1-indexed position of the parameter * * @param mixed $value The value to bind to the parameter. * @param integer $type Explicit data type for the parameter using the PDO::PARAM_* constants. * * @return boolean Returns TRUE on success or FALSE on failure. */ public function bindValue($param, $value, $type = null); /** * Binds a PHP variable to a corresponding named or question mark placeholder in the * SQL statement that was use to prepare the statement. Unlike PDOStatement->bindValue(), * the variable is bound as a reference and will only be evaluated at the time * that PDOStatement->execute() is called. * * Most parameters are input parameters, that is, parameters that are * used in a read-only fashion to build up the query. Some drivers support the invocation * of stored procedures that return data as output parameters, and some also as input/output * parameters that both send in data and are updated to receive it. * * @param mixed $param Parameter identifier. For a prepared statement using named placeholders, * this will be a parameter name of the form :name. For a prepared statement * using question mark placeholders, this will be the 1-indexed position of the parameter * * @param mixed $variable Name of the PHP variable to bind to the SQL statement parameter. * * @param integer $type Explicit data type for the parameter using the PDO::PARAM_* constants. To return * an INOUT parameter from a stored procedure, use the bitwise OR operator to set the * PDO::PARAM_INPUT_OUTPUT bits for the data_type parameter. * * @param integer $length Length of the data type. To indicate that a parameter is an OUT parameter * from a stored procedure, you must explicitly set the length. * @param mixed $driverOptions * @return boolean Returns TRUE on success or FALSE on failure. */ public function bindParam($column, &$variable, $type = null, $length = null, $driverOptions = array()); /** * closeCursor * Closes the cursor, enabling the statement to be executed again. * * @return boolean Returns TRUE on success or FALSE on failure. */ public function closeCursor(); /** * columnCount * Returns the number of columns in the result set * * @return integer Returns the number of columns in the result set represented * by the PDOStatement object. If there is no result set, * this method should return 0. */ public function columnCount(); /** * errorCode * Fetch the SQLSTATE associated with the last operation on the statement handle * * @see Doctrine_Adapter_Interface::errorCode() * @return string error code string */ public function errorCode(); /** * errorInfo * Fetch extended error information associated with the last operation on the statement handle * * @see Doctrine_Adapter_Interface::errorInfo() * @return array error info array */ public function errorInfo(); /** * Executes a prepared statement * * If the prepared statement included parameter markers, you must either: * call PDOStatement->bindParam() to bind PHP variables to the parameter markers: * bound variables pass their value as input and receive the output value, * if any, of their associated parameter markers or pass an array of input-only * parameter values * * * @param array $params An array of values with as many elements as there are * bound parameters in the SQL statement being executed. * @return boolean Returns TRUE on success or FALSE on failure. */ public function execute($params = null); /** * fetch * * @see Query::HYDRATE_* constants * @param integer $fetchStyle Controls how the next row will be returned to the caller. * This value must be one of the Query::HYDRATE_* constants, * defaulting to Query::HYDRATE_BOTH * * @param integer $cursorOrientation For a PDOStatement object representing a scrollable cursor, * this value determines which row will be returned to the caller. * This value must be one of the Query::HYDRATE_ORI_* constants, defaulting to * Query::HYDRATE_ORI_NEXT. To request a scrollable cursor for your * PDOStatement object, * you must set the PDO::ATTR_CURSOR attribute to Doctrine::CURSOR_SCROLL when you * prepare the SQL statement with Doctrine_Adapter_Interface->prepare(). * * @param integer $cursorOffset For a PDOStatement object representing a scrollable cursor for which the * $cursorOrientation parameter is set to Query::HYDRATE_ORI_ABS, this value specifies * the absolute number of the row in the result set that shall be fetched. * * For a PDOStatement object representing a scrollable cursor for * which the $cursorOrientation parameter is set to Query::HYDRATE_ORI_REL, this value * specifies the row to fetch relative to the cursor position before * PDOStatement->fetch() was called. * * @return mixed */ public function fetch($fetchStyle = Query::HYDRATE_BOTH, $cursorOrientation = Query::HYDRATE_ORI_NEXT, $cursorOffset = null); /** * fetchAll * Returns an array containing all of the result set rows * * @param integer $fetchStyle Controls how the next row will be returned to the caller. * This value must be one of the Query::HYDRATE_* constants, * defaulting to Query::HYDRATE_BOTH * * @param integer $columnIndex Returns the indicated 0-indexed column when the value of $fetchStyle is * Query::HYDRATE_COLUMN. Defaults to 0. * * @return array */ public function fetchAll($fetchStyle = Query::HYDRATE_BOTH); /** * fetchColumn * Returns a single column from the next row of a * result set or FALSE if there are no more rows. * * @param integer $columnIndex 0-indexed number of the column you wish to retrieve from the row. If no * value is supplied, PDOStatement->fetchColumn() * fetches the first column. * * @return string returns a single column in the next row of a result set. */ public function fetchColumn($columnIndex = 0); /** * fetchObject * Fetches the next row and returns it as an object. * * Fetches the next row and returns it as an object. This function is an alternative to * PDOStatement->fetch() with Query::HYDRATE_CLASS or Query::HYDRATE_OBJ style. * * @param string $className Name of the created class, defaults to stdClass. * @param array $args Elements of this array are passed to the constructor. * * @return mixed an instance of the required class with property names that correspond * to the column names or FALSE in case of an error. */ public function fetchObject($className = 'stdClass', $args = array()); /** * getAttribute * Retrieve a statement attribute * * @param integer $attribute * @see Doctrine::ATTR_* constants * @return mixed the attribute value */ public function getAttribute($attribute); /** * getColumnMeta * Returns metadata for a column in a result set * * @param integer $column The 0-indexed column in the result set. * * @return array Associative meta data array with the following structure: * * native_type The PHP native type used to represent the column value. * driver:decl_ type The SQL type used to represent the column value in the database. If the column in the result set is the result of a function, this value is not returned by PDOStatement->getColumnMeta(). * flags Any flags set for this column. * name The name of this column as returned by the database. * len The length of this column. Normally -1 for types other than floating point decimals. * precision The numeric precision of this column. Normally 0 for types other than floating point decimals. * pdo_type The type of this column as represented by the PDO::PARAM_* constants. */ public function getColumnMeta($column); /** * nextRowset * Advances to the next rowset in a multi-rowset statement handle * * Some database servers support stored procedures that return more than one rowset * (also known as a result set). The nextRowset() method enables you to access the second * and subsequent rowsets associated with a PDOStatement object. Each rowset can have a * different set of columns from the preceding rowset. * * @return boolean Returns TRUE on success or FALSE on failure. */ public function nextRowset(); /** * rowCount * rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement * executed by the corresponding object. * * If the last SQL statement executed by the associated Statement object was a SELECT statement, * some databases may return the number of rows returned by that statement. However, * this behaviour is not guaranteed for all databases and should not be * relied on for portable applications. * * @return integer Returns the number of rows. */ public function rowCount(); /** * setAttribute * Set a statement attribute * * @param integer $attribute * @param mixed $value the value of given attribute * @return boolean Returns TRUE on success or FALSE on failure. */ public function setAttribute($attribute, $value); /** * setFetchMode * Set the default fetch mode for this statement * * @param integer $mode The fetch mode must be one of the Query::HYDRATE_* constants. * @return boolean Returns 1 on success or FALSE on failure. */ public function setFetchMode($mode, $arg1); }