mysqli::__construct

mysqli::connect

mysqli_connect

(PHP 5, PHP 7, PHP 8)

mysqli::__construct -- mysqli::connect -- mysqli_connectAbre uma nova conexão com o servidor MySQL

Descrição

Estilo orientado a objetos

public mysqli::__construct(
    ?string $hostname = null,
    ?string $username = null,
    #[\SensitiveParameter] ?string $password = null,
    ?string $database = null,
    ?int $port = null,
    ?string $socket = null
)
public mysqli::connect(
    ?string $hostname = null,
    ?string $username = null,
    #[\SensitiveParameter] ?string $password = null,
    ?string $database = null,
    ?int $port = null,
    ?string $socket = null
): bool

Estilo procedural

mysqli_connect(
    ?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âmetro hostname.

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 ambiente SYSTEMROOT não estará disponível e o PHP terá problemas para carregar o Winsock.

Veja Também