Obtención y uso de metadatos de MySQLi

Hay tres informaciones que le gustaría obtener de MySQLi.

  • Information about the result of queries - Esto incluye el número de registros afectados por cualquier instrucción SELECT, UPDATE o DELETE.

  • Information about tables and databases - Esto incluye información relacionada con la estructura de tablas y bases de datos.

  • Information about the MySQLi server - Esto incluye el estado actual del servidor de la base de datos, el número de versión, etc.

Es muy fácil obtener toda esta información en el indicador de mysqli, pero mientras usamos las API de PERL o PHP, necesitamos llamar a varias API explícitamente para obtener toda esta información. La siguiente sección le mostrará cómo obtener esta información.

Obtener el número de filas afectadas por una consulta

Ejemplo PERL

En los scripts DBI, el recuento de filas afectadas es devuelto por do () o por execute (), dependiendo de cómo ejecute la 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);

Ejemplo de PHP

En PHP, invoque la función mysqli_affected_rows () para averiguar cuántas filas cambió una consulta:

$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");

Listado de tablas y bases de datos

Es muy fácil enumerar todas las bases de datos y tablas disponibles con el servidor de bases de datos. Su resultado puede ser nulo si no tiene suficientes privilegios.

Aparte del método que he mencionado a continuación, puede utilizar las consultas MOSTRAR TABLAS o MOSTRAR BASES DE DATOS para obtener una lista de tablas o bases de datos en PHP o en PERL.

Ejemplo PERL

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

Ejemplo 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();
?>

Obtener metadatos del servidor

Hay los siguientes comandos en MySQL que se pueden ejecutar en el indicador de mysql o usando cualquier script como PHP para obtener información importante sobre el servidor de la base de datos.

No Señor. Comando y descripción
1

SELECT VERSION( )

Cadena de versión del servidor

2

SELECT DATABASE( )

Nombre de la base de datos actual (vacío si no hay ninguno)

3

SELECT USER( )

Nombre de usuario actual

4

SHOW STATUS

Indicadores de estado del servidor

5

SHOW VARIABLES

Variables de configuración del servidor