(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Abre uma conexão a um servidor MySQL
Estilo orientado a objetos
$hostname = null,$username = null,$password = null,$database = null,$port = null,$socket = null,$flags = 0Estilo procedural
$mysql,$hostname = null,$username = null,$password = null,$database = null,$port = null,$socket = null,$flags = 0Abre uma conexão a um servidor de banco de dados MySQL com várias opções de conexão.
Esta função difere de mysqli_connect():
mysqli_real_connect() precisa de um objeto válido que deve ser criado por mysqli_init().
Existe um parâmetro flags.
mysqlSomente no estilo procedural: Um objeto mysqli retornado por mysqli_connect() ou mysqli_init()
hostname
Pode ser um nome de host ou um endereço IP. Ao passar null, o valor é recuperado de
mysqli.default_host.
Quando possível, serão usados pipes em vez do protocolo TCP/IP.
O protocolo TCP/IP é usado se um nome de host e um número de porta forem fornecidos juntos, por ex. localhost:3308.
username
O nome de usuário do MySQL, ou null para assumir o nome de usuário com base na opção ini
mysqli.default_user.
password
A senha do MySQL, ou null para assumir a senha com base na opção ini
mysqli.default_pw.
database
O banco de dados padrão a ser usado ao realizar consultas ou null.
port
O número da porta para tentar conectar ao servidor MySQL ou null para assumir a porta com base na opção
mysqli.default_port.
socket
O socket ou pipe nomeado que deve ser usado ou null para assumir o socket com base na opção ini
mysqli.default_socket.
Nota:
A especificação do parâmetro
socketnão determinará explicitamente o tipo de conexão a ser usada ao conectar-se ao servidor MySQL. A forma como a conexão é feita com o banco de dados MySQL é determinada pelo parâmetrohostname.
flags
Com o parâmetro flags, pode-se definir diferentes
opções de conexão:
| Nome | Descrição |
|---|---|
MYSQLI_CLIENT_COMPRESS |
Usa protocolo de compressão |
MYSQLI_CLIENT_FOUND_ROWS |
Retorna o número de linhas correspondentes, não o número de linhas afetadas |
MYSQLI_CLIENT_IGNORE_SPACE |
Permite espaços após os nomes das funções. Faz com que todos os nomes de funções sejam palavras reservadas. |
MYSQLI_CLIENT_INTERACTIVE |
Permite segundos de interactive_timeout (em vez de
segundos de wait_timeout) de inatividade antes de fechar a conexão
|
MYSQLI_CLIENT_SSL |
Usa SSL (criptografia) |
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT |
Como MYSQLI_CLIENT_SSL, mas desabilita a validação do certificado
SSL fornecido. Isso é apenas para instalações usando o driver nativo do MySQL e MySQL 5.6 ou posterior.
|
Nota:
Por motivos de segurança, a opção
MULTI_STATEMENTnão é suportado no PHP. Se for desejado executar várias consultas, use a função mysqli_multi_query().
Se o relatório de erros da extensão mysqli estiver habilitado (MYSQLI_REPORT_ERROR) e a operação solicitada falhar,
um aviso será gerado. Se, além disso, o modo for definido como MYSQLI_REPORT_STRICT,
uma exceção mysqli_sql_exception será lançada em vez do aviso.
| Versão | Descrição |
|---|---|
| 7.4.0 | Todos os parâmetros agora são anuláveis. |
Exemplo #1 Exemplo de mysqli::real_connect()
Estilo orientado a objetos
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_init();
$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db', null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);
echo 'Sucesso... ' . $mysqli->host_info . "\n";Estilo orientado a objetos ao estender a classe mysqli
<?php
class foo_mysqli extends mysqli {
public function __construct($host, $user, $pass, $db)
{
parent::__construct();
parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
parent::real_connect($host, $user, $pass, $db, null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);
}
}
$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');
echo 'Sucesso... ' . $db->host_info . "\n";Estilo procedural
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_init();
mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db', null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);
echo 'Sucesso... ' . mysqli_get_host_info($link) . "\n";Os exemplos acima produzirão:
Sucesso... MySQL host info: localhost via TCP/IP
Nota:
O MySQLnd sempre assume o conjunto de caracteres padrão do servidor. Este conjunto de caracteres é enviado durante a criação/autenticação da conexão e será usado pelo mysqlnd.
A libmysqlclient usa o conjunto de caracteres padrão definido no arquivo my.cnf ou definido por uma chamada explícita a mysqli_options() antes de chamar mysqli_real_connect(), mas depois de chamar mysqli_init().