Recuperación y uso de metadatos de MySQLi

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

  • Información sobre el resultado de las solicitudes – Esto incluye el número de registros que se ven afectados por cualquier instrucción SELECT, UPDATE o DELETE.

  • Información sobre tablas y bases de datos – Esto incluye información relacionada con la estructura de tablas y bases de datos.

  • Información del servidor MySQLi – 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 la línea de comandos de mysqli, pero cuando usamos las API de PERL o PHP, necesitamos llamar explícitamente a varias API para obtener toda esta información. La siguiente sección le muestra cómo obtener esta información.

Obtener el número de filas afectadas por una consulta

Ejemplo de PERL

En los scripts DBI, la función do () o execute () devuelve el número de filas afectadas, 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 affectedn", (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 affectedn", (defined ($count) ? $count : 0);

Ejemplo de PHP

En PHP, llame a la función mysqli_affected_rows () para averiguar cuántas filas han cambiado en la 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 affectedn");

Listado de tablas y bases de datos

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

Además del método que mencioné a continuación, puede usar las consultas SHOW TABLES o SHOW DATABASES para obtener una lista de tablas o bases de datos en PHP o PERL.

Ejemplo de PERL

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

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: %sn", mysqli_error($conn));
   }
   while( $row = mysqli_fetch_row( $result ) ){
      if (($row[0]!="information_schema") && ($row[0]!="mysql")) {
         echo $row[0]."rn";
      }
   }
   $conn->close();
?>

Obtener metadatos del servidor

MySQL tiene los siguientes comandos que se pueden ejecutar en la línea de comandos 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
uno

SELECCIONAR VERSIÓN ()

Cadena de versión del servidor

2

SELECCIONAR BASE DE DATOS ()

El nombre de la base de datos actual (vacío si no)

3

SELECCIONAR USUARIO ()

Nombre de usuario actual

cuatro

MOSTRAR ESTADO

Indicadores de estado del servidor

cinco

MOSTRAR VARIABLES

Variables de configuración del servidor

🚫