mysqli::__construct
mysqli::connect
mysqli_connect
(PHP 5, PHP 7, PHP 8)
mysqli::__construct -- mysqli::connect -- mysqli_connect — Abre uma nova conexão com o 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
)
?string
$hostname
= null
,?string
$username
= null
,#[\SensitiveParameter] ?string
$password
= null
,?string
$database
= null
,?int
$port
= null
,?string
$socket
= null
): bool
Estilo procedural
?string
$hostname
= null
,?string
$username
= null
,#[\SensitiveParameter] ?string
$password
= null
,?string
$database
= null
,?int
$port
= null
,?string
$socket
= null
): mysqli|false
Abre uma conexão com o servidor MySQL.
Parâmetros
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
.Prefixar o host com
p:
abre uma conexão persistente. mysqli_change_user() é chamado automaticamente em conexões abertas a partir do pool de conexões. 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 utilizado 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 ini 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 maneira com a qual a conexão é feita com o banco de dados MySQL é determinada pelo parâmetrohostname
.
Valor Retornado
mysqli_connect() retorna um objeto que representa a conexão com um servidor MySQL,
ou false
em caso de falha.
mysqli::connect() retorna true
em caso de sucesso ou false
em caso de falha.
Antes do PHP 8.1.0, ele retornava null
em caso de sucesso.
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 |
---|---|
8.1.0 |
Agora, o método mysqli::connect() retorna true em vez de null em caso de sucesso.
|
7.4.0 | Todos os parâmetros podem ser null. |
Exemplos
Example #1 Exemplo d emysqli::__construct()
Estilo orientado a objetos
<?php
/* Você deve ativar o relatório de erros para mysqli antes de tentar fazer uma conexão */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
/* Defina o conjunto de caracteres desejado após estabelecer uma conexão */
$mysqli->set_charset('utf8mb4');
printf("Success... %s\n", $mysqli->host_info);
Estilo procedural
<?php
/* Você deve ativar o relatório de erros para mysqli antes de tentar fazer uma conexão */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
/* Defina o conjunto de caracteres desejado após estabelecer uma conexão */
mysqli_set_charset($mysqli, 'utf8mb4');
printf("Success... %s\n", mysqli_get_host_info($mysqli));
Os exemplos acima produzirão algo semelhante a:
Sucesso... localhost via TCP/IP
Example #2 Estendendo a classe mysqli
<?php
class FooMysqli extends mysqli {
public function __construct($host, $user, $pass, $db, $port, $socket, $charset) {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
parent::__construct($host, $user, $pass, $db, $port, $socket);
$this->set_charset($charset);
}
}
$db = new FooMysqli('localhost', 'my_user', 'my_password', 'my_db', 3306, null, 'utf8mb4');
Example #3 Tratamento manual de erros
Se o relatório de erros estiver desabilitado, o desenvolvedor é responsável por verificar e tratar as falhas
Estilo orientado a objetos
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
throw new RuntimeException('mysqli connection error: ' . $mysqli->connect_error);
}
/* Defina o conjunto de caracteres desejado após estabelecer uma conexão */
$mysqli->set_charset('utf8mb4');
if ($mysqli->errno) {
throw new RuntimeException('mysqli error: ' . $mysqli->error);
}
Estilo procedural
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (mysqli_connect_errno()) {
throw new RuntimeException('mysqli connection error: ' . mysqli_connect_error());
}
/* Defina o conjunto de caracteres desejado após estabelecer uma conexão */
mysqli_set_charset($mysqli, 'utf8mb4');
if (mysqli_errno($mysqli)) {
throw new RuntimeException('mysqli error: ' . mysqli_error($mysqli));
}
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().
Note:
Estilo orientado a objetos apenas: Se a conexão falhar, um objeto ainda será retornado. Para verificar se a conexão falhou, use a função mysqli_connect_error() ou a propriedade mysqli->connect_error como nos exemplos anteriores.
Note:
Se for necessário definir opções, como o tempo limite de conexão, mysqli_real_connect() deve ser usado.
Note:
Chamar o construtor sem parâmetros é o mesmo que chamar mysqli_init().
Note:
O erro "Can't create TCP/IP socket (10106)" geralmente significa que a diretiva de configuração variables_order não contém o caractere
E
. No Windows, se o ambiente não for copiado, a variável de ambienteSYSTEMROOT
não estará disponível e o PHP terá problemas para carregar o Winsock.
Veja Também
- mysqli_real_connect() - Abre uma conexão com um servidor mysql
- mysqli_options() - Define opções
- mysqli_connect_errno() - Retorna o código de erro da última chamada de conexão
- mysqli_connect_error() - Retorna uma descrição do último erro de conexão
- mysqli_close() - Fecha uma conexão ao banco de dados previamente aberta