_server = $options['host']; $this->_user = $options['user']; $this->_password = $options['pass']; $this->_port = (int) $options['port']; $this->_socket = $options['socket']; } /** * Create database adapter * * @param array $options Connection options * @param boolean $forceMysql Whether to force the use of MySQL * * @return MsdDbFactory */ public static function getAdapter($options = null, $forceMysql = false) { if ($options === null) { $config = Msd_Configuration::getInstance(); $options = array( 'host' => $config->get('config.dbuser.host'), 'user' => $config->get('config.dbuser.user'), 'pass' => $config->get('config.dbuser.pass'), 'port' => (int) $config->get('config.dbuser.port'), 'socket' => $config->get('config.dbuser.socket'), ); } if (function_exists('mysqli_connect') && !$forceMysql) { $dbObject = new Msd_Db_Mysqli($options); } else { $dbObject = new Msd_Db_Mysql($options); } return $dbObject; } /** * Establish a connection to SQL-Server. The connection is stored and used * for further DB requests. * * @return bool if connection is successfull * */ abstract protected function _dbConnect (); /** * Get selected database * * @return string */ abstract public function getSelectedDb (); /** * Get version nr of sql server * * @return string */ abstract public function getServerInfo (); /** * Get version nr of sql client * * @return string */ abstract public function getClientInfo (); /** * Get all known character sets of this SQL-Server. * * @return array */ abstract public function getCharsets (); /** * Set character set of the MySQL-connection. * * Trys to set the connection charset and returns it. * Throw Exception on failure. * * @param string $charset * @throws Exception * * @return string */ abstract public function setConnectionCharset ( $charset = 'utf8'); /** * Get list of databases * * Gets list of all databases that the actual SQL-Server-User has access to * and saves it in $this->databases. * Returns true on success or false on error. * * @return array */ abstract public function getDatabases (); /** * Select the given database to use it as the target for following queries. * * Returns true if selection was succesfull otherwise false. * * @throws Exception * @param string $database * * @return bool */ abstract public function selectDb ($database); /** * Execute a query and set _resultHandle * * If $getRows is true alls rows are fetched and returned * * @param string $query The query to execute * @param const $kind Type of result set * @param boolean $getRows Whether to fetch all rows and return them * * @return boolean|array */ abstract public function query ($query, $kind = self::ARRAY_OBJECT, $getRows = true); /** * Get next row from result set * * @param const $kind * * @return array|object */ abstract public function getNextRow($kind); /** * Get the list of tables of given database * * @param string $dbName Name of database * * @return array */ abstract public function getTables ($dbName); /** * Gets extended table information for one or all tables * * @param string $table * * @return array */ abstract public function getTableStatus ($table = false); /** * Returns the CREATE Statement of a table. * * @throws Exception * @param string $table Get CREATE-Statement for this table * * @return string Create statement */ abstract public function getTableCreate ($table); /** * Gets the full description of all columns of a table * * Saves list to $this->metaTables[$database][$table]. * * @param string $table Table to read meta info from * * @return array */ abstract public function getTableColumns ($table); /** * Gets the number of affected rows of the last query * * @return int */ abstract public function getAffectedRows (); /** * Gets the servers variables * * @return array */ abstract public function getVariables (); /** * Escape a value for inserting it in query * * @param string $val * * @return string */ abstract public function escape ($val); /** * Optimize a table. Returns true on success or MySQL-Error. * * @param $table string Name of table * * @return string|bool Returned optimize message or false on error */ abstract public function optimizeTable ($table); /** * Creates a new database with the given name, charackter set and collation. * * @abstract * * @param string $databaseName Name of the new database * @param string $databaseCharset Charackter set of the new database * @param string $databaseCollation Collation of the new database * * @return bool */ abstract public function createDatabase( $databaseName, $databaseCharset = '', $databaseCollation = '' ); /** * Retrieves the collations from information schema. * * @param string|null $charsetName Name of the charset * * @return array */ abstract public function getCollations($charsetName = null); /** * Retrieves the default collation for the charset or the given charset. * * @param string|null $charsetName Name of the charset * * @return array|string */ abstract public function getDefaultCollations($charsetName = null); /** * Retrieves the last MySQL error. * * @return array */ abstract public function getLastError(); /** * Handles a SQL-Error * * @param string $errmsg * @param int $errno * @throws MsdEception * * @return void */ public function sqlError ($errmsg, $errno) { throw new Msd_Exception($errmsg, $errno); } }