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
$host
= ?,$username
= ?,$passwd
= ?,$dbname
= ?,$port
= ?,$socket
= ?,$flags
= ?Estilo procedural
$link
,$host
= ?,$username
= ?,$passwd
= ?,$dbname
= ?,$port
= ?,$socket
= ?,$flags
= ?Estabeleç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() você pode 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().
host
Pode ser um nome de host ou um endereço IP. Passando o valor null
ou a string "localhost" para este parâmetro, assume-se o host
local. Quando possível, serão usados pipes em vez do
protocolo TCP/IP.
username
O nome de usuário do MySQL.
passwd
Se for fornecido ou null
, o servidor MySQL tentará autenticar
o usuário somente com relação aos registros de usuário que não possuem senha. Isso
permite que um nome de usuário seja usado com permissões diferentes (dependendo
se uma senha foi fornecida ou não).
dbname
Se fornecido, especificará o banco de dados padrão a ser usado ao realizar consultas.
port
Especifica o número da porta para tentar se conectar ao servidor MySQL.
socket
Especifica o soquete ou pipe nomeado que deve ser usado.
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âmetro dohost
.
flags
Com as flags
de parâmetro, você pode definir diferentes
opções de conexão:
Nome | Descrição |
---|---|
MYSQLI_CLIENT_COMPRESS |
Usar 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 |
Permita espaços após os nomes das funções. Torna todos os nomes de função palavras reservadas. |
MYSQLI_CLIENT_INTERACTIVE |
Permita segundos de interactive_timeout (em vez de
wait_timeout segundos) de inatividade antes de fechar a conexão
|
MYSQLI_CLIENT_SSL |
Usar 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 MySQL Native Driver e MySQL 5.6 ou posterior.
|
Nota:
Por motivos de segurança, o sinalizador
MULTI_STATEMENT
não é suportado no PHP. Se você deseja 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.
Exemplo #1 mysqli::real_connect() exemplo
Estilo orientado a objetos
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('A configuração MYSQLI_INIT_COMMAND falhou');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('A configuração 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::init();
if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('A configuração MYSQLI_INIT_COMMAND falhou');
}
if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('A configuração MYSQLI_OPT_CONNECT_TIMEOUT falhou');
}
if (!parent::real_connect($host, $user, $pass, $db)) {
die('Erro de conexão (' . 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 failed');
}
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... Informações do host MySQL: 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