public function connect() { if ($this->_connection) { return; } if (Database_MySQLi::$_set_names === NULL) { // Determine if we can use mysqli_set_charset(), which is only // available on PHP 5.2.3+ when compiled against MySQL 5.0+ Database_MySQLi::$_set_names = !function_exists('mysqli_set_charset'); } // Extract the connection parameters, adding required variabels extract($this->_config['connection'] + array('database' => '', 'hostname' => '', 'port' => ini_get("mysqli.default_port"), 'socket' => ini_get("mysqli.default_socket"), 'username' => '', 'password' => '', 'persistent' => FALSE)); // Prevent this information from showing up in traces //unset($this->_config['connection']['username'], $this->_config['connection']['password']); try { if ($persistent) { // Create a persistent connection $this->_connection = new mysqli('p:' . $hostname, $username, $password, $database, $port, $socket); } else { // Create a connection and force it to be a new link $this->_connection = new mysqli($hostname, $username, $password, $database, $port, $socket); } } catch (ErrorException $e) { throw new Database_Exception('[:code] :error', array(':code' => $this->_connection->connect_errno, ':error' => $this->_connection->connect_error), $this->_connection->connect_errno); // No connection exists $this->_connection = NULL; } // \xFF is a better delimiter, but the PHP driver uses underscore $this->_connection_id = sha1($hostname . '_' . $username . '_' . $password); $this->_select_db($database); if (!empty($this->_config['charset'])) { // Set the character set $this->set_charset($this->_config['charset']); } }
public function connect() { if ($this->_connection) { return; } if (Database_MySQLi::$_set_names === NULL) { // Determine if we can use mysqli_set_charset(), which is only // available on PHP 5.2.3+ when compiled against MySQL 5.0+ Database_MySQLi::$_set_names = !function_exists('mysqli_set_charset'); } // Extract the connection parameters, adding required variabels extract($this->_config['connection'] + array('database' => '', 'hostname' => '', 'username' => '', 'password' => '', 'persistent' => FALSE)); // Prevent this information from showing up in traces unset($this->_config['connection']['username'], $this->_config['connection']['password']); try { if ($persistent) { // Create a persistent connection $this->_connection = mysqli_connect('p:' . $hostname, $username, $password); } else { // Create a connection and force it to be a new link $this->_connection = mysqli_connect($hostname, $username, $password); } } catch (Exception $e) { // No connection exists $this->_connection = NULL; throw new Database_Exception(':error', array(':error' => $e->getMessage()), $e->getCode()); } // \xFF is a better delimiter, but the PHP driver uses underscore $this->_connection_id = sha1($hostname . '_' . $username . '_' . $password); $this->_select_db($database); if (!empty($this->_config['charset'])) { // Set the character set $this->set_charset($this->_config['charset']); } if (!empty($this->_config['connection']['variables'])) { // Set session variables $variables = array(); foreach ($this->_config['connection']['variables'] as $var => $val) { $variables[] = 'SESSION ' . $var . ' = ' . $this->quote($val); } mysqli_query($this->_connection, 'SET ' . implode(', ', $variables)); } }
public function connect() { if ($this->_connection) { return; } if (Database_MySQLi::$_set_names === NULL) { // Determine if we can use mysqli_set_charset(), which is only // available on PHP 5.2.3+ when compiled against MySQL 5.0+ Database_MySQLi::$_set_names = !function_exists('mysqli_set_charset'); } // Extract the connection parameters, adding required variabels extract($this->_config['connection'] + array('database' => '', 'hostname' => '', 'username' => '', 'password' => '', 'socket' => '', 'port' => 3306, 'ssl' => NULL)); // Prevent this information from showing up in traces unset($this->_config['connection']['username'], $this->_config['connection']['password']); try { if (is_array($ssl)) { $this->_connection = mysqli_init(); $this->_connection->ssl_set(Arr::get($ssl, 'client_key_path'), Arr::get($ssl, 'client_cert_path'), Arr::get($ssl, 'ca_cert_path'), Arr::get($ssl, 'ca_dir_path'), Arr::get($ssl, 'cipher')); $this->_connection->real_connect($hostname, $username, $password, $database, $port, $socket, MYSQLI_CLIENT_SSL); } else { $this->_connection = new mysqli($hostname, $username, $password, $database, $port, $socket); } } catch (Exception $e) { // No connection exists $this->_connection = NULL; throw new Database_Exception(':error', array(':error' => $e->getMessage()), $e->getCode()); } // \xFF is a better delimiter, but the PHP driver uses underscore $this->_connection_id = sha1($hostname . '_' . $username . '_' . $password); if (!empty($this->_config['charset'])) { // Set the character set $this->set_charset($this->_config['charset']); } if (!empty($this->_config['connection']['variables'])) { // Set session variables $variables = array(); foreach ($this->_config['connection']['variables'] as $var => $val) { $variables[] = 'SESSION ' . $var . ' = ' . $this->quote($val); } $this->_connection->query('SET ' . implode(', ', $variables)); } }