Dutch PHP Conference 2023 - Call for Papers

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

mysql

Somente no estilo procedural: Um objeto mysqli 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

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.

Exemplos

Exemplo #1 mysqli::real_connect() exemplo

Estilo orientado a objetos

<?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 a objetos 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 produzirão:

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

Notas

Nota:

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

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