. */ /** * Doctrine_Adapter_Mysqli * This class is used for special testing purposes. * * @package Doctrine * @subpackage Adapter * @author Konsta Vesterinen * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.phpdoctrine.org * @since 1.0 * @version $Revision: 1080 $ */ class Doctrine_Adapter_Mysqli extends Doctrine_Adapter { /** * Creates a connection to the database. * * @return void * @throws Doctrine_Adapter_Mysqli_Exception */ protected function _connect() { if ($this->_connection) { return; } // Suppress connection warnings here. // Throw an exception instead. @$this->_connection = new mysqli( $this->_config['host'], $this->_config['username'], $this->_config['password'], $this->_config['dbname'] ); if ($this->_connection === false || mysqli_connect_errno()) { throw new Doctrine_Adapter_Mysqli_Exception(mysqli_connect_error()); } } /** * Force the connection to close. * * @return void */ public function closeConnection() { $this->_connection->close(); $this->_connection = null; } /** * Prepare a statement and return a PDOStatement-like object. * * @param string $sql SQL query * @return Doctrine_Statement_Mysqli */ public function prepare($sql) { $this->_connect(); $stmt = new Doctrine_Statement_Mysqli($this, $sql); $stmt->setFetchMode($this->_fetchMode); return $stmt; } /** * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column. * * As a convention, on RDBMS brands that support sequences * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence * from the arguments and returns the last id generated by that sequence. * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method * returns the last value generated for such a column, and the table name * argument is disregarded. * * MySQL does not support sequences, so $tableName and $primaryKey are ignored. * * @param string $tableName OPTIONAL Name of table. * @param string $primaryKey OPTIONAL Name of primary key column. * @return integer */ public function lastInsertId($tableName = null, $primaryKey = null) { $mysqli = $this->_connection; return $mysqli->insert_id; } /** * Begin a transaction. * * @return void */ protected function _beginTransaction() { $this->_connect(); $this->_connection->autocommit(false); } /** * Commit a transaction. * * @return void */ protected function _commit() { $this->_connect(); $this->_connection->commit(); $this->_connection->autocommit(true); } /** * Roll-back a transaction. * * @return void */ protected function _rollBack() { $this->_connect(); $this->_connection->rollback(); $this->_connection->autocommit(true); } }