Obtenção e uso de metadados MySQLi

Existem três informações que você gostaria de obter do MySQLi.

  • Information about the result of queries - Isso inclui o número de registros afetados por qualquer instrução SELECT, UPDATE ou DELETE.

  • Information about tables and databases - Isso inclui informações relativas à estrutura de tabelas e bancos de dados.

  • Information about the MySQLi server - Isso inclui o status atual do servidor de banco de dados, número da versão, etc.

É muito fácil obter todas essas informações no prompt do mysqli, mas ao usar APIs PERL ou PHP, precisamos chamar várias APIs explicitamente para obter todas essas informações. A seção a seguir mostrará como obter essas informações.

Obtenção do número de linhas afetadas por uma consulta

Exemplo PERL

Em scripts DBI, a contagem de linhas afetadas é retornada por do () ou por execute (), dependendo de como você executa a consulta -

# Method 1
# execute $query using do( )
my $count = $dbh->do ($query);
# report 0 rows if an error occurred
printf "%d rows were affected\n", (defined ($count) ? $count : 0);

# Method 2
# execute query using prepare( ) plus execute( )
my $sth = $dbh->prepare ($query);
my $count = $sth->execute ( );
printf "%d rows were affected\n", (defined ($count) ? $count : 0);

Exemplo de PHP

Em PHP, invoque a função mysqli_affected_rows () para descobrir quantas linhas uma consulta mudou -

$result_id = mysqli_query ($query, $conn_id);
# report 0 rows if the query failed
$count = ($result_id ? mysqli_affected_rows ($conn_id) : 0);
print ("$count rows were affected\n");

Listando tabelas e bancos de dados

É muito fácil listar todos os bancos de dados e tabelas disponíveis com o servidor de banco de dados. Seu resultado pode ser nulo se você não tiver privilégios suficientes.

Além do método que mencionei abaixo, você pode usar as consultas SHOW TABLES ou SHOW DATABASES para obter uma lista de tabelas ou bancos de dados em PHP ou em PERL.

Exemplo PERL

# Get all the tables available in current database.
my @tables = $dbh->tables ( );
foreach $table (@tables ){
   print "Table Name $table\n";
}

Exemplo de PHP

<?php
   $servername = "localhost:3306";
   $username = "root";
   $password = "";
   $dbname = "TUTORIALS";
   $conn = new mysqli($servername, $username, $password, $dbname);
   
   if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
   } 
   echo"Database connected";
   $sql="SHOW DATABASES";
   
   if (!($result = mysqli_query($conn,$sql))) {
      printf("Error: %s\n", mysqli_error($conn));
   }
   while( $row = mysqli_fetch_row( $result ) ){
      if (($row[0]!="information_schema") && ($row[0]!="mysql")) {
         echo $row[0]."\r\n";
      }
   }
   $conn->close();
?>

Obtendo Metadados do Servidor

Existem os seguintes comandos no MySQL que podem ser executados no prompt do mysql ou usando qualquer script como PHP para obter várias informações importantes sobre o servidor de banco de dados.

Sr. Não. Comando e Descrição
1

SELECT VERSION( )

String da versão do servidor

2

SELECT DATABASE( )

Nome do banco de dados atual (vazio se nenhum)

3

SELECT USER( )

Nome de usuário atual

4

SHOW STATUS

Indicadores de status do servidor

5

SHOW VARIABLES

Variáveis ​​de configuração do servidor