(PHP 5, PHP 7, PHP 8)
mysqli::change_user -- mysqli_change_user — Modifica o usuário para a conexão com o banco de dados especificada
Estilo orientado a objetos
Estilo procedural
Muda o usuário na conexão com o banco de dados especificado e define o banco atual.
Para conseguir mudar usuários com sucesso, os parâmetors username
e
password
fornecidos devem ser válidos e este usuário deve ter
permissões suficientes para acessar o banco de dados desejado. Se por qualquer motivo a autorização
falhar, a autenticação do usuário atual irá permanecer.
mysql
Somente no estilo procedural: Um objeto mysqli retornado por mysqli_connect() ou mysqli_init()
username
O nome do usuário MySQL.
password
A senha MySQL.
database
O banco de dados a ser designado.
Se desejado, o valor null
pode ser passado, resultando somente em mudança
de usuário e não selecionando o banco. Para selecionar o banco neste
caso, utilize a função mysqli_select_db().
Retorna true
em caso de sucesso ou false
em caso de falha.
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.
Exemplo #1 Exemplo de mysqli::change_user()
Estilo orientado a objetos
<?php
/* Conecta ao banco 'test' */
$mysqli = new mysqli("localhost", "meu_usuario", "minha_senha", "teste");
/* verifica a conexão */
if (mysqli_connect_errno()) {
printf("Conexão falhou: %s\n", mysqli_connect_error());
exit();
}
/* Define uma variável 'a' */
$mysqli->query("SET @a:=1");
/* Redefine e seleciona um novo banco */
$mysqli->change_user("meu_usuario", "minha_senha", "mundo");
if ($result = $mysqli->query("SELECT DATABASE()")) {
$row = $result->fetch_row();
printf("Banco padrão: %s\n", $row[0]);
$result->close();
}
if ($result = $mysqli->query("SELECT @a")) {
$row = $result->fetch_row();
if ($row[0] === NULL) {
printf("Valor da variável 'a' é NULL\n");
}
$result->close();
}
/* fecha a conexão */
$mysqli->close();
?>
Estilo procedural
<?php
/* Conecta ao banco 'teste' */
$link = mysqli_connect("localhost", "meu_usuario", "minha_senha", "teste");
/* verifica a conexão */
if (!$link) {
printf("Conexão falhou: %s\n", mysqli_connect_error());
exit();
}
/* Define a variável 'a' */
mysqli_query($link, "SET @a:=1");
/* redefine tudo e seleciona um novo banco */
mysqli_change_user($link, "meu_usuario", "minha_senha", "mundo");
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
$row = mysqli_fetch_row($result);
printf("Banco padrão: %s\n", $row[0]);
mysqli_free_result($result);
}
if ($result = mysqli_query($link, "SELECT @a")) {
$row = mysqli_fetch_row($result);
if ($row[0] === NULL) {
printf("Valor da variável 'a' é NULL\n");
}
mysqli_free_result($result);
}
/* fecha a conexão */
mysqli_close($link);
?>
Os exemplos acima produzirão:
Banco padrão: mundo Valor da variável 'a' é NULL
Nota:
Usar este comando sempre irá fazer com que a conexão atual se comporte como se fosse uma conexão totalmente nova, não importando se a operação foi completada com sucesso. Esta reinicialização inclui realizar uma reversão de dados em quaisquer transações ativas, fechando todas as tabelas temporárias e destravando todas as tabelas travadas.