PHP 8.1.15 Released!

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 à objeto

public mysqli::real_connect(
    string $host = ?,
    string $username = ?,
    string $passwd = ?,
    string $dbname = ?,
    int $port = ?,
    string $socket = ?,
    int $flags = ?
): bool

Estilo procedural

mysqli_real_connect(
    mysqli $link,
    string $host = ?,
    string $username = ?,
    string $passwd = ?,
    string $dbname = ?,
    int $port = ?,
    string $socket = ?,
    int $flags = ?
): 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() você pode definir várias opções de conexão.

  • Existe um parâmetro flags.

Parâmetros

link

Somente no estilo procedural: Um recurso link 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 do host.

flags

Com as flags de parâmetro, você pode definir diferentes opções de conexão:

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

Valor Retornado

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

Erros

If mysqli error reporting is enabled (MYSQLI_REPORT_ERROR) and the requested operation fails, a warning is generated. If, in addition, the mode is set to MYSQLI_REPORT_STRICT, a mysqli_sql_exception is thrown instead.

Exemplos

Exemplo #1 mysqli::real_connect() exemplo

Estilo orientado à objeto

<?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 à objeto 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 irão imprimir:

Sucesso... Informações do host MySQL: localhost via TCP/IP

Notas

Nota:

MySQLnd sempre assume o charset padrão do banco de dados. Este charset é enviado durante a criação da conexão, e o mysqlnd usará a partir daí.

Libmysql utiliza o charset padrão configurado no arquivo my.cnf ou por uma chamada a mysqli_options() anterior a chamada de mysqli_real_connect() e depois de mysqli_init().

Veja Também

add a note

User Contributed Notes 2 notes

up
-10
Pom
13 years ago
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.
up
-17
php-nospam325123 at brainpower dot no-ip dot org
12 years ago
this is because it tries to use sockets with the string localhost this is documented en known
To Top