mysqli::real_connect

mysqli_real_connect

(PHP 5, PHP 7, PHP 8)

mysqli::real_connect -- mysqli_real_connectAbre uma conexão com um servidor mysql

Descrição

Estilo orientado a objetos

public mysqli::real_connect(
    ?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_real_connect(
    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âmetro hostname.

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 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.

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().

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

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