/** * Create the class instance */ public function __construct() { static::$link = mysqli_init(); static::$link->real_connect(static::$host, static::$username, static::$password, static::$dbname); static::$inits++; static::$instance = $this; }
/** * Create a new connection to a mysql server. * * @param string $host * @param string $user * @param string $pass * @param string $database * * @throws \DMI_Authentication_Exception * @throws \DMI_ServerNotFound_Exception * @throws \DMI_Exception * * @return mixed|void */ public function connect($host, $user, $pass, $database){ // Did the host come in with a port attached? if(strpos($host, ':') !== false) list($host, $port) = explode(':', $host); else $port = 3306; if(!class_exists('mysqli', false)){ throw new \DMI_Exception('Unable to locate the PHP MySQLi library. Please switch to a supported driver or see http://us3.php.net/manual/en/book.mysqli.php for more information.'); } $this->_conn = new \mysqli(); // Errors, SHHH! I'll handle them manually! @$this->_conn->real_connect($host, $user, $pass, $database, $port); // Setting the correct exception would be useful! switch($this->_conn->errno){ // Server not found case 2002: throw new \DMI_ServerNotFound_Exception($this->_conn->error, $this->_conn->errno); // User not allowed case 1045: throw new \DMI_Authentication_Exception($this->_conn->error, $this->_conn->errno); // No error, just break; case 0: break; // Everything else gets a generic error. default: throw new \DMI_Exception($this->_conn->error, $this->_conn->errno); } // Set the encoding to UTF-8 // This will prevent the mysql server from translating characters to their LATIN versions during the commit. $this->_conn->query("SET NAMES utf8"); }
/** * @param array $params * @param string $username * @param string $password * @param array $driverOptions * * @throws \Doctrine\DBAL\Driver\Mysqli\MysqliException */ public function __construct(array $params, $username, $password, array $driverOptions = array()) { $port = isset($params['port']) ? $params['port'] : ini_get('mysqli.default_port'); // Fallback to default MySQL port if not given. if (!$port) { $port = 3306; } $socket = isset($params['unix_socket']) ? $params['unix_socket'] : ini_get('mysqli.default_socket'); $dbname = isset($params['dbname']) ? $params['dbname'] : null; $flags = isset($driverOptions[static::OPTION_FLAGS]) ? $driverOptions[static::OPTION_FLAGS] : null; $this->_conn = mysqli_init(); $this->setDriverOptions($driverOptions); $previousHandler = set_error_handler(function () { }); if (!$this->_conn->real_connect($params['host'], $username, $password, $dbname, $port, $socket, $flags)) { set_error_handler($previousHandler); $sqlState = 'HY000'; if (@$this->_conn->sqlstate) { $sqlState = $this->_conn->sqlstate; } throw new MysqliException($this->_conn->connect_error, $sqlState, $this->_conn->connect_errno); } set_error_handler($previousHandler); if (isset($params['charset'])) { $this->_conn->set_charset($params['charset']); } }
public function __construct() { $this->loadConfiguration(); $this->mysqli = mysqli_init(); if (!$this->mysqli->real_connect($GLOBALS['sys_dbhost'], $GLOBALS['sys_dbuser'], $GLOBALS['sys_dbpasswd'])) { $this->mysqli = false; } }
/** * Establishes db connection */ private function connect($host, $user, $pwd, $dbname) { $this->database = mysqli_init(); $this->database->real_connect($host, $user, $pwd, $dbname); if ($this->database === NULL || $this->database->connect_errno) { die("Failed to connect to database!"); } $this->database->set_charset("utf8"); }
public function __construct(array $params, $username, $password, array $driverOptions = array()) { $port = isset($params['port']) ? $params['port'] : ini_get('mysqli.default_port'); $socket = isset($params['unix_socket']) ? $params['unix_socket'] : ini_get('mysqli.default_socket'); $this->_conn = mysqli_init(); if (!$this->_conn->real_connect($params['host'], $username, $password, $params['dbname'], $port, $socket)) { throw new MysqliException($this->_conn->connect_error, $this->_conn->connect_errno); } if (isset($params['charset'])) { $this->_conn->set_charset($params['charset']); } }
public function open() { if ($this->connected) { return false; } $this->mysqli = mysqli_init(); $this->connected = @$this->mysqli->real_connect($this->settings->getHost(), $this->settings->getUsername(), $this->settings->getPassword(), $this->settings->getSchema()); if (!$this->connected) { throw new ConnectionException(sprintf('Unable to connect to host "%s" as user "%s". %s.', $this->settings->getHost(), $this->settings->getUsername(), mysqli_connect_error()), '', mysqli_connect_errno()); } @$this->mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1); @$this->mysqli->set_charset($this->settings->getCharset()); return true; }
/** * Connect to the database server and select the database * * @throws \Exception If the connection cannot be established */ protected function connect() { $host = $this->arrConfig['dbHost']; if ($this->arrConfig['dbPconnect']) { $host = 'p:' . $host; } $this->resConnection = mysqli_init(); $this->resConnection->options(MYSQLI_INIT_COMMAND, "SET sql_mode='" . $this->arrConfig['dbSqlMode'] . "'"); $this->resConnection->real_connect($host, $this->arrConfig['dbUser'], $this->arrConfig['dbPass'], $this->arrConfig['dbDatabase'], $this->arrConfig['dbPort'], $this->arrConfig['dbSocket']); if ($this->resConnection->connect_error) { throw new \Exception($this->resConnection->connect_error); } $this->resConnection->set_charset($this->arrConfig['dbCharset']); }
/** * {@inheritDoc} */ protected function realConnect(array $parameters) { // init $this->link = new \mysqli(); $this->link->init(); // set driver specific options if (!empty($parameters['options'])) { foreach ($parameters['options'] as $option => $value) { $option = strtoupper($option); $this->attributes[$option] = $value; } } foreach ($this->attributes as $attr => $value) { if (is_string($attr)) { $option = constant($attr); if (defined($option)) { $this->link->options($option, $value); } } else { $this->link->options($attr, $value); } } // real connect $this->link->real_connect(isset($parameters['host']) ? $parameters['host'] : 'localhost', isset($parameters['username']) ? $parameters['username'] : '******', isset($parameters['password']) ? $parameters['password'] : null, isset($parameters['db']) ? $parameters['db'] : null, isset($parameters['port']) ? (int) $parameters['port'] : null, isset($parameters['socket']) ? $parameters['socket'] : null); if ($this->link->connect_error) { throw new LogicException(Message::get(Message::DB_CONNECT_FAIL, $this->link->connect_errno, $this->link->connect_error), Message::DB_CONNECT_FAIL); } // set charset if (!empty($parameters['charset'])) { $this->link->set_charset($parameters['charset']); } return $this; }
/** * Connect to db, return connect identifier * * @param string $dbhost, The MySQL server hostname. * @param string $dbuser, The username. * @param string $dbpass, The password. * @param string $dbname, The db name, optional, defualt to '' * @param string $dbport, The MySQL server port, optional, defualt to '3306' * @param string $charset, Connect charset, optional, default to 'utf8' * @param bool $pconnect, Whether persistent connection: 1 - Yes, 0 - No * @return link_identifier */ function connect($dbhost, $dbuser, $dbpass, $dbname = '', $dbport = '3306', $charset = 'utf8', $pconnect = 0) { if ($pconnect && version_compare(PHP_VERSION, '5.3.0', '>=')) { //PHP since 5.3.0 added the ability of persistent connections. $dbhost = 'p:' . $dbhost; } //$mysqli = mysqli_init(); $mysqli = new mysqli(); if (!$mysqli) { $this->halt('mysqli_init failed'); } //$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0'); $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, $this->connTimeout); // - TRUE makes mysql_connect() always open a new link, even if // mysql_connect() was called before with the same parameters. // This is important if you are using two databases on the same // server. // - 2 means CLIENT_FOUND_ROWS: return the number of found // (matched) rows, not the number of affected rows. if (!@$mysqli->real_connect($dbhost, $dbuser, $dbpass, $dbname, $dbport, null, MYSQLI_CLIENT_COMPRESS | MYSQLI_CLIENT_FOUND_ROWS)) { $this->halt("Connect to {$dbuser}@{$dbhost}:{$dbport} Error: ({$mysqli->connect_errno}){$mysqli->connect_error}"); } $mysqli->set_charset($charset); $this->linkId = $mysqli; return $this->linkId; }
/** * Creates a real connection to the database with multi-query capability. * * @return void * @throws Zend_Db_Adapter_Mysqli_Exception */ protected function _connect() { if ($this->_connection) { return; } if (!extension_loaded('mysqli')) { throw new Zend_Db_Adapter_Exception('mysqli extension is not installed'); } // Suppress connection warnings here. // Throw an exception instead. @($conn = new mysqli()); if (false === $conn || mysqli_connect_errno()) { throw new Zend_Db_Adapter_Mysqli_Exception(mysqli_connect_errno()); } $conn->init(); $conn->options(MYSQLI_OPT_LOCAL_INFILE, true); #$conn->options(MYSQLI_CLIENT_MULTI_QUERIES, true); $port = !empty($this->_config['port']) ? $this->_config['port'] : null; $socket = !empty($this->_config['unix_socket']) ? $this->_config['unix_socket'] : null; // socket specified in host config if (strpos($this->_config['host'], '/') !== false) { $socket = $this->_config['host']; $this->_config['host'] = null; } elseif (strpos($this->_config['host'], ':') !== false) { list($this->_config['host'], $port) = explode(':', $this->_config['host']); } #echo "<pre>".print_r($this->_config,1)."</pre>"; die; @$conn->real_connect($this->_config['host'], $this->_config['username'], $this->_config['password'], $this->_config['dbname'], $port, $socket); if (mysqli_connect_errno()) { throw new Zend_Db_Adapter_Mysqli_Exception(mysqli_connect_error()); } $this->_connection = $conn; /** @link http://bugs.mysql.com/bug.php?id=18551 */ $this->_connection->query("SET SQL_MODE=''"); }
/** * Connect to database * @return bool */ public function connect($host, $user, $pass, $port = 3306, $options = array()) { $client_flags = defined('MYSQL_CLIENT_FLAGS') ? MYSQL_CLIENT_FLAGS : 0; $this->dbh = mysqli_init(); $socket = null; $port_or_socket = strstr($host, ':'); if (!empty($port_or_socket)) { $host = substr($host, 0, strpos($host, ':')); $port_or_socket = substr($port_or_socket, 1); if (0 !== strpos($port_or_socket, '/')) { $port = intval($port_or_socket); $maybe_socket = strstr($port_or_socket, ':'); if (!empty($maybe_socket)) { $socket = substr($maybe_socket, 1); } } else { $socket = $port_or_socket; $port = null; } } if (WP_DEBUG) { $this->dbh->real_connect($host, $user, $pass, null, $port, $socket, $client_flags); } else { @$this->dbh->real_connect($host, $user, $pass, null, $port, $socket, $client_flags); } if (!empty($options['key']) && !empty($options['cert']) && !empty($options['ca'])) { $this->dbh->ssl_set($options['key'], $options['cert'], $options['ca'], $options['ca_path'], $options['cipher']); } return !mysqli_connect_error(); }
/** * Open a (persistent) connection to a MySQL server * mysql_pconnect() wrapper function * Method is taken from t3lib_db * * @param string Database host IP/domain * @param string Username to connect with. * @param string Password to connect with. */ private function connect($credArr) { if (!extension_loaded('mysqli')) { throw new \RuntimeException('Database Error: PHP mysqli extension not loaded. This is a must have for TYPO3 CMS!', 1271492607); } $dbHost = $credArr['host'] ? $credArr['host'] : 'localhost'; $dbUsername = $credArr['username']; $dbPassword = $credArr['password']; $dbPort = isset($credArr['port']) ? (int) $credArr['port'] : 3306; $dbSocket = empty($credArr['socket']) ? NULL : $credArr['socket']; $dbCompress = !empty($credArr['dbClientCompress']) && $dbHost != 'localhost' && $dbHost != '127.0.0.1'; if (isset($credArr['no_pconnect']) && !$credArr['no_pconnect']) { $dbHost = 'p:' . $dbHost; } $this->db = mysqli_init(); $connected = $this->db->real_connect($dbHost, $dbUsername, $dbPassword, NULL, $dbPort, $dbSocket, $dbCompress ? MYSQLI_CLIENT_COMPRESS : 0); if (!$connected) { $message = 'Database Error: Could not connect to MySQL server ' . $dbHost . ' with user ' . $dbUsername . ': ' . $this->sql_error(); throw new RuntimeException($message, 1271492616); } $this->isConnected = TRUE; $connectionCharset = empty($credArr['connectionCharset']) ? 'utf8' : $credArr['connectionCharset']; $this->db->set_charset($connectionCharset); $setDBinit = tx_rnbase_util_Strings::trimExplode(LF, str_replace("' . LF . '", LF, $credArr['setDBinit']), TRUE); foreach ($setDBinit as $v) { if ($this->query($v) === FALSE) { // TODO: handler errors } } }
/** * Create a new Mysqli object. * * @param array $params * @return object */ public function __construct($key) { mysqli_report(MYSQLI_REPORT_STRICT); $params = Config::get('mysql.' . $key); if ($params === null && IS_SUBSITE) { $params = MainConfig::get('mysql.' . $key); } if ($params === null) { $params = []; } parent::init(); $params['pass'] = isset($params['pass']) ? $params['pass'] : ''; $params['user'] = isset($params['user']) ? $params['user'] : '******'; $params['host'] = isset($params['host']) ? $params['host'] : '127.0.0.1'; $params['port'] = isset($params['port']) ? $params['port'] : 3306; $params['timeout'] = isset($params['timeout']) ? $params['timeout'] : 30; $params['charset'] = isset($params['charset']) ? $params['charset'] : 'utf8'; $params['database'] = isset($params['database']) ? $params['database'] : false; parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, $params['timeout']); parent::real_connect($params['host'], $params['user'], $params['pass'], $params['database'], $params['port']); if ($this->errno === 0) { $this->set_charset($params['charset']); if (isset($params['cache']) && $params['cache'] === false) { $this->cache(false); } } }
/** * Connects to the database if needed. * * @return void Returns void if the database connected successfully. * * @since 1.0 * @throws \RuntimeException */ public function connect() { if ($this->connection) { return; } /* * Unlike mysql_connect(), mysqli_connect() takes the port and socket as separate arguments. Therefore, we * have to extract them from the host string. */ $port = isset($this->options['port']) ? $this->options['port'] : 3306; if (preg_match('/^(?P<host>((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(:(?P<port>.+))?$/', $this->options['host'], $matches)) { // It's an IPv4 address with or without port $this->options['host'] = $matches['host']; if (!empty($matches['port'])) { $port = $matches['port']; } } elseif (preg_match('/^(?P<host>\\[.*\\])(:(?P<port>.+))?$/', $this->options['host'], $matches)) { // We assume square-bracketed IPv6 address with or without port, e.g. [fe80:102::2%eth1]:3306 $this->options['host'] = $matches['host']; if (!empty($matches['port'])) { $port = $matches['port']; } } elseif (preg_match('/^(?P<host>(\\w+:\\/{2,3})?[a-z0-9\\.\\-]+)(:(?P<port>[^:]+))?$/i', $this->options['host'], $matches)) { // Named host (e.g example.com or localhost) with or without port $this->options['host'] = $matches['host']; if (!empty($matches['port'])) { $port = $matches['port']; } } elseif (preg_match('/^:(?P<port>[^:]+)$/', $this->options['host'], $matches)) { // Empty host, just port, e.g. ':3306' $this->options['host'] = 'localhost'; $port = $matches['port']; } // ... else we assume normal (naked) IPv6 address, so host and port stay as they are or default // Get the port number or socket name if (is_numeric($port)) { $this->options['port'] = (int) $port; } else { $this->options['socket'] = $port; } // Make sure the MySQLi extension for PHP is installed and enabled. if (!static::isSupported()) { throw new UnsupportedAdapterException('The MySQLi extension is not available'); } $this->connection = mysqli_init(); // Attempt to connect to the server. $connected = $this->connection->real_connect($this->options['host'], $this->options['user'], $this->options['password'], null, $this->options['port'], $this->options['socket']); if (!$connected) { $this->log(Log\LogLevel::ERROR, 'Could not connect to MySQL: ' . $this->connection->connect_error); throw new ConnectionFailureException('Could not connect to MySQL.', $this->connection->connect_errno); } // If auto-select is enabled select the given database. if ($this->options['select'] && !empty($this->options['database'])) { $this->select($this->options['database']); } $this->utf8mb4 = $this->serverClaimsUtf8mb4Support(); // Set charactersets (needed for MySQL 4.1.2+). $this->utf = $this->setUtf(); }
public function connect() { parent::real_connect($this->config['db_host'], $this->config['db_username'], $this->config['db_password']); if (!empty($this->current_database)) { parent::select_db($database_name); } else { parent::select_db($this->config['database']); } }
/** * Constructor for the MySQLi Extension * * Throws an exception when connection fails * * @param $Host * The hostname/ip address of the database server * * @param $Port * The port on which the database server is listening * * @param $UserName * A UserName which has access to the database we'll be using. * * @param $Password * The Password for the UserName provided * * @param $Database * The Database which contains the Neflaria tables * * @throws Exception */ public function __construct($Host, $UserName, $Password, $Database, $Port) { parent::init(); if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { $this->LogError('?', 'Setting the connect timeout failed'); } if (!parent::real_connect($Host, $UserName, $Password, $Database, $Port)) { $this->LogError(mysqli_connect_errno(), mysqli_connect_error()); } }
/** * @param QuarkURI $uri * * @return mixed * * @throws QuarkArchException * @throws QuarkConnectionException */ public function Connect(QuarkURI $uri) { $this->_connection = \mysqli_init(); if (!$this->_connection) { throw new QuarkArchException('MySQLi initialization fault'); } $options = $uri->options; if (is_array($options)) { foreach ($options as $key => $value) { if (!$this->_connection->options($key, $value)) { throw new QuarkArchException('MySQLi option set error'); } } } if (!$this->_connection->real_connect($uri->host, $uri->user, $uri->pass, QuarkSQL::DBName($uri->path), (int) $uri->port)) { throw new QuarkConnectionException($uri, Quark::LOG_FATAL); } $this->_sql = new QuarkSQL($this); }
public function __construct($host, $user, $pass, $db) { parent::init(); if (!parent::real_connect($host, $user, $pass, $db)) { throw new Exception('Ошибка подключения (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } if (!$this->set_charset('utf8')) { throw new Exception('Ошибка при загрузке набора символов utf8: ' . $this->error); } }
public function __construct($host = '127.0.0.1', $username = '******', $password = '******', $dbname = 'web_train') { parent::init(); if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { die('Setting options failed'); } if (!parent::real_connect($host, $username, $password, $dbname)) { die('Connect to db failed'); } parent::query('set names utf8'); }
/** * connect - Connects to mysql server * * @throws exception */ public function connect() { if (!$this->connected) { parent::init(); if (!parent::real_connect($this->host, $this->user, $this->pass, $this->db, $this->port)) { throw new Exception($this->connect_error); } else { $this->connected = true; } } return $this; }
/** * @param array $params * @param string $username * @param string $password * @param array $driverOptions * * @throws \Doctrine\DBAL\Driver\Mysqli\MysqliException */ public function __construct(array $params, $username, $password, array $driverOptions = array()) { $port = isset($params['port']) ? $params['port'] : ini_get('mysqli.default_port'); $socket = isset($params['unix_socket']) ? $params['unix_socket'] : ini_get('mysqli.default_socket'); $this->_conn = mysqli_init(); $this->setDriverOptions($driverOptions); $previousHandler = set_error_handler(function () { }); if (!$this->_conn->real_connect($params['host'], $username, $password, $params['dbname'], $port, $socket)) { set_error_handler($previousHandler); $sqlState = 'HY000'; if (@$this->_conn->sqlstate) { $sqlState = $this->_conn->sqlstate; } throw new MysqliException($this->_conn->connect_error, $sqlState, $this->_conn->connect_errno); } set_error_handler($previousHandler); if (isset($params['charset'])) { $this->_conn->set_charset($params['charset']); } }
private final function __construct() { parent::init(); if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) { throw new Exception('Setting MYSQLI_INIT_COMMAND failed'); } if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { throw new Exception('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed'); } if (!parent::real_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME)) { throw new Exception('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } }
public function rcon($host, $user, $pass, $db) { parent::init(); if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) { die('Setting MYSQLI_INIT_COMMAND failed'); } if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed'); } #$db_connection = new mysqli('localhost', 'root', '', 'brechbuhler'); if (!parent::real_connect($host, $user, $pass, $db)) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } }
function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect, $halt = true) { $link = new mysqli(); if (!$link->real_connect($dbhost, $dbuser, $dbpw, $dbname, null, null, MYSQLI_CLIENT_COMPRESS)) { $halt && $this->halt('notconnect', $this->errno()); } else { $this->curlink = $link; if ($this->version() > '4.1') { $link->set_charset($dbcharset ? $dbcharset : $this->config[1]['dbcharset']); $serverset = $this->version() > '5.0.1' ? 'sql_mode=\'\'' : ''; $serverset && $link->query("SET {$serverset}"); } } return $link; }
/** * Establish Database Connection * * @return void */ public function connect() { // Check Active Connections (Only Connect Once) $key = $this->user . '@' . $this->db . '@' . $this->host; if (isset(self::$connections[$key])) { // Use Active Connection $this->connection = self::$connections[$key]; } else { // Setup Connection $this->connection = mysqli_init(); if (!$this->connection) { die(Log::halt('mysqli_init failed', 503)); } // Set Database Timeout if (!$this->connection->options(MYSQLI_OPT_CONNECT_TIMEOUT, 10)) { die(Log::halt('Setting Options Failed', 503)); } // Connect to Database if (!$this->connection->real_connect($this->host, $this->user, $this->pass, $this->db)) { die(Log::halt('Connect fatal error: could not connect to host - ' . mysqli_connect_error(), 503)); } // UTF-8 Character Set if (!$this->connection->set_charset('utf8')) { die(Log::halt('Error loading character set utf8 - ' . $this->connection->error, 503)); } // Set connection Timezone $timezone = @date_default_timezone_get(); if (!$this->connection->query("SET time_zone = '" . $timezone . "';")) { die(Log::halt('Error setting timezone to ' . $timezone . ' - ' . $this->connection->error, 503)); } // Debug Log: Connected to Database Log::db(__CLASS__, 'Connected To: ' . $this->db . '@' . $this->host); // Store Connection self::$connections[$key] = $this->connection; } }
/** * Constructor: Conecta a MySQL y establece el charset a utf8 * @param string $host host de MySQL * @param string $user usuario de acceso a MySQL * @param string $pass contraseña del usuario de acceso a MySQL * @param string $db nombbre de esquema de MySQL * @throws DBException si no puede conectar o establecer el charset a utf8 */ public function __construct($host, $user, $pass, $db) { parent::init(); /* if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) { throw new exception('Setting MYSQLI_INIT_COMMAND failed'); } if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { throw new exception('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed'); } */ if (!parent::real_connect($host, $user, $pass, $db)) { //throw new exception($this->connect_error, $this->connect_errno); //$connect_error falla hasta PHP 5.3.0, asi que usamos la siguiente throw new DBException(mysqli_connect_error(), mysqli_connect_errno()); } /* change character set to utf8 */ if (!parent::set_charset("utf8")) { throw new DBException(mysqli_connect_error(), mysqli_connect_errno()); } }
/** * Open a (persistent) connection to a MySQL server * * @return bool|void * @throws \RuntimeException */ public function sql_pconnect() { if ($this->isConnected) { return $this->link; } if (!extension_loaded('mysqli')) { throw new \RuntimeException('Database Error: PHP mysqli extension not loaded. This is a must have for TYPO3 CMS!', 1271492607); } $host = $this->persistentDatabaseConnection ? 'p:' . $this->databaseHost : $this->databaseHost; $this->link = mysqli_init(); $connected = $this->link->real_connect($host, $this->databaseUsername, $this->databaseUserPassword, null, (int) $this->databasePort, $this->databaseSocket, $this->connectionCompression ? MYSQLI_CLIENT_COMPRESS : 0); if ($connected) { $this->isConnected = true; if ($this->link->set_charset($this->connectionCharset) === false) { GeneralUtility::sysLog('Error setting connection charset to "' . $this->connectionCharset . '"', 'core', GeneralUtility::SYSLOG_SEVERITY_ERROR); } foreach ($this->initializeCommandsAfterConnect as $command) { if ($this->query($command) === false) { GeneralUtility::sysLog('Could not initialize DB connection with query "' . $command . '": ' . $this->sql_error(), 'core', GeneralUtility::SYSLOG_SEVERITY_ERROR); } } $this->checkConnectionCharset(); } else { // @todo This should raise an exception. Would be useful especially to work during installation. $error_msg = $this->link->connect_error; $this->link = null; GeneralUtility::sysLog('Could not connect to MySQL server ' . $host . ' with user ' . $this->databaseUsername . ': ' . $error_msg, 'core', GeneralUtility::SYSLOG_SEVERITY_FATAL); } return $this->link; }
public function real_connect($host = NULL, $user = NULL, $password = NULL, $database = NULL, $port = NULL, $socket = NULL, $flags = NULL) { $this->_db = $database; parent::real_connect($host, $user, $password, $database, $port, $socket, $flags); }
/** * Connect * * @throws Exception\RuntimeException * @return $this */ public function connect() { if ($this->resource instanceof \mysqli) { return $this; } // localize $p = $this->connectionParameters; // given a list of key names, test for existence in $p $findParameterValue = function (array $names) use($p) { foreach ($names as $name) { if (isset($p[$name])) { return $p[$name]; } } return; }; $hostname = $findParameterValue(array('hostname', 'host')); $username = $findParameterValue(array('username', 'user')); $password = $findParameterValue(array('password', 'passwd', 'pw')); $database = $findParameterValue(array('database', 'dbname', 'db', 'schema')); $port = isset($p['port']) ? (int) $p['port'] : null; $socket = isset($p['socket']) ? $p['socket'] : null; $this->resource = new \mysqli(); $this->resource->init(); if (!empty($p['driver_options'])) { foreach ($p['driver_options'] as $option => $value) { if (is_string($option)) { $option = strtoupper($option); if (!defined($option)) { continue; } $option = constant($option); } $this->resource->options($option, $value); } } $this->resource->real_connect($hostname, $username, $password, $database, $port, $socket); if ($this->resource->connect_error) { throw new Exception\RuntimeException('Connection error', null, new Exception\ErrorException($this->resource->connect_error, $this->resource->connect_errno)); } if (!empty($p['charset'])) { $this->resource->set_charset($p['charset']); } return $this; }