Notice that when using "localhost" as hostname the port option might be ignored.
If you wish to connect thru a different port than default, substitute "127.0.0.1" for localhost.
(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Abre uma conexão com 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
= 0Estabeleça uma conexão com um mecanismo de banco de dados MySQL.
Esta função difere de mysqli_connect():
mysqli_real_connect() precisa de um objeto válido que deve ser criado pela função mysqli_init().
Com a função mysqli_options() pode-se definir várias opções de conexão.
Existe um parâmetro flags
.
mysql
Somente 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
socket
nã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_STATEMENT
não é suportado no PHP. Se for desejado executar várias consultas, use a função mysqli_multi_query().
Retorna true
em caso de sucesso ou false
em caso de falha.
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 | All parameters are now nullable. |
Exemplo #1 mysqli::real_connect() exemplo
Estilo orientado a objetos
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init falhou');
}
if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Configuração de MYSQLI_INIT_COMMAND falhou');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Configuração de MYSQLI_OPT_CONNECT_TIMEOUT falhou');
}
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
die('Erro de conexão (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Sucesso... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Estilo orientado a objetos ao estender a classe mysqli
<?php
class foo_mysqli extends mysqli {
public function __construct($host, $user, $pass, $db) {
parent::__construct();
if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Configuração de MYSQLI_INIT_COMMAND falhou');
}
if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Configuração de MYSQLI_OPT_CONNECT_TIMEOUT falhou');
}
if (!parent::real_connect($host, $user, $pass, $db)) {
die('Erro de conexão Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}
$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');
echo 'Sucesso... ' . $db->host_info . "\n";
$db->close();
?>
Estilo procedural
<?php
$link = mysqli_init();
if (!$link) {
die('mysqli_init falhou');
}
if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('A configuração MYSQLI_INIT_COMMAND falhou');
}
if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('A configuração MYSQLI_OPT_CONNECT_TIMEOUT falhou');
}
if (!mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) {
die('Erro de conexão (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Sucesso... ' . mysqli_get_host_info($link) . "\n";
mysqli_close($link);
?>
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().
Notice that when using "localhost" as hostname the port option might be ignored.
If you wish to connect thru a different port than default, substitute "127.0.0.1" for localhost.
this is because it tries to use sockets with the string localhost this is documented en known