W3docs

Guia Completo sobre a Função mysqli_select_db no PHP

Aprenda a usar mysqli_select_db() no PHP para alternar entre bancos de dados MySQL em uma única conexão, com exemplos e erros comuns a evitar.

A função mysqli_select_db() altera o banco de dados padrão (ativo) de uma conexão MySQL existente. Após selecionar um banco de dados, cada consulta subsequente executada nessa conexão — SELECT, INSERT, UPDATE, entre outras — terá como alvo esse banco de dados, a menos que você qualifique completamente o nome de uma tabela (por exemplo, other_db.users).

Na maioria das vezes, você define o banco de dados ao abrir a conexão com mysqli_connect(), sem precisar chamar mysqli_select_db(). Ela se torna útil em uma situação específica: quando uma única conexão precisa trabalhar com mais de um banco de dados e você deseja alternar o ativo sem reconectar.

Este guia explica a sintaxe, o valor de retorno, quando você realmente precisa da função e os erros comuns a evitar.

Sintaxe

mysqli_select_db(mysqli $connection, string $database): bool
ParâmetroDescrição
$connectionO link de conexão retornado por mysqli_connect(). Obrigatório.
$databaseO nome do banco de dados a definir como padrão para esta conexão.

No estilo orientado a objetos, a mesma operação é um método no objeto de conexão:

$connection->select_db($database);

Valor de retorno

mysqli_select_db() retorna um booleano:

  • true — o banco de dados foi selecionado com sucesso.
  • false — o banco de dados não existe, o usuário não tem permissão ou a conexão é inválida.

Por retornar um booleano, sempre verifique o resultado em vez de presumir sucesso. Em caso de falha, mysqli_error() fornece o motivo.

Um exemplo completo e executável

O trecho abaixo conecta sem nomear um banco de dados, depois seleciona um explicitamente e executa uma consulta contra ele. Substitua as credenciais pelas suas para executá-lo em um servidor real.

<?php

// 1. Connect WITHOUT choosing a database yet.
$connection = mysqli_connect('localhost', 'username', 'password');

if (!$connection) {
    die('Connection failed: ' . mysqli_connect_error());
}

// 2. Pick the database this connection should use.
if (mysqli_select_db($connection, 'shop')) {
    echo "Database 'shop' selected.\n";
} else {
    die("Could not select database: " . mysqli_error($connection));
}

// 3. Every query now runs against 'shop'.
$result = mysqli_query($connection, 'SELECT name FROM products LIMIT 1');

mysqli_close($connection);

Quando você realmente precisa dela

Normalmente você passa o nome do banco de dados diretamente para mysqli_connect():

// The 4th argument selects the database immediately — no select_db() needed.
$connection = mysqli_connect('localhost', 'username', 'password', 'shop');

Use mysqli_select_db() apenas quando precisar alternar bancos de dados em uma conexão aberta, por exemplo, um script de relatório que copia linhas entre dois bancos de dados no mesmo servidor:

<?php

$connection = mysqli_connect('localhost', 'username', 'password');

// Read from the live database.
mysqli_select_db($connection, 'live');
$rows = mysqli_query($connection, 'SELECT id, total FROM orders');

// Switch the same connection to the archive database and write there.
mysqli_select_db($connection, 'archive');
// ... insert $rows into archive.orders ...

mysqli_close($connection);

Alternar com mysqli_select_db() é mais barato do que abrir uma segunda conexão, e é por isso que a função existe.

Erros comuns

  • Ignorar o valor de retorno. Uma seleção com falha deixa o banco de dados anterior ativo (ou nenhum), fazendo com que consultas posteriores acessem silenciosamente as tabelas erradas. Sempre verifique o booleano.
  • Ordem incorreta dos argumentos. A conexão vem primeiro, o nome do banco de dados depois: mysqli_select_db($connection, 'shop'). Inverter a ordem é um erro frequente.
  • Confundi-la com mysqli_connect(). select_db() não autentica nem abre nada — apenas altera o banco de dados padrão de uma conexão que já existe.
  • Injeção SQL a partir de entrada do usuário. Um nome de banco de dados é um identificador e não pode ser parametrizado com uma declaração preparada. Nunca o construa a partir de entrada bruta do usuário; restrinja-o a uma lista de permissões fixa de nomes conhecidos.

Funções relacionadas

Conclusão

mysqli_select_db() define o banco de dados padrão para uma conexão MySQL existente. Prefira selecionar o banco de dados diretamente em mysqli_connect(), e reserve mysqli_select_db() para o caso para o qual foi criada: alternar entre bancos de dados em uma única conexão. Independentemente do que usar, sempre verifique o valor de retorno booleano para que uma seleção com falha nunca envie suas consultas ao banco de dados errado.

Prática

Prática
Qual é a finalidade da função select_db() no PHP?
Qual é a finalidade da função select_db() no PHP?
Was this page helpful?