mysqli::real_connect
mysqli_real_connect
(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Abre uma conexão com um servidor mysql
Descrição
Estilo orientado a objetos
?string
$hostname
= null
,?string
$username
= null
,#[\SensitiveParameter] ?string
$password
= null
,?string
$database
= null
,?int
$port
= null
,?string
$socket
= null
,int
$flags
= 0): bool
Estilo procedural
mysqli
$mysql
,?string
$hostname
= null
,?string
$username
= null
,#[\SensitiveParameter] ?string
$password
= null
,?string
$database
= null
,?int
$port
= null
,?string
$socket
= null
,int
$flags
= 0): bool
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() pode-se definir várias opções de conexão.
-
Existe um parâmetro
flags
.
Parâmetros
-
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.Note:
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:Opções suportadas 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 dewait_timeout
) de inatividade antes de fechar a conexãoMYSQLI_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.Note:
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().
Erros/Exceções
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.
Registro de Alterações
Versão | Descrição |
---|---|
7.4.0 | All parameters are now nullable. |
Exemplos
Example #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
Notas
Note:
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().
Veja Também
- mysqli_connect() - Sinônimo de mysqli::__construct
- mysqli_init() - Inicializa o MySQLi e retorna um objeto a ser utilizado com mysqli_real_connect()
- mysqli_options() - Define opções
- mysqli_ssl_set() - Usado para estabelecer conexões seguras usando SSL
- mysqli_close() - Fecha uma conexão ao banco de dados previamente aberta