• Publicidad

Consulta SELECT, con campos VARIABLES

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Consulta SELECT, con campos VARIABLES

Notapor Lor » 2011-11-22 06:01 @292

Quisiera generar una aplicación en donde el usuario pueda diseñar, él mismo, consultas a una base de datos acorde a los campos de datos que desea conocer.

Tendría un formulario con las siguientes cajas de texto:
• Select ($param_select): para indicar los nombres de las columnas de la tabla que desea
• Campo ‘FROM’ ($param_from), para indicar el nombre de la tabla y
• Campo ‘WHERE’ ($param_where) para ingresar condiciones si tuviese.

Mi pregunta es, al ejecutar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $query = " SELECT " . $param_select
  2.           . " FROM "   . $param_from
  3.           . " WHERE "  . $param_where
  4.           ;
  5.  
  6. my $sth = $dbh->prepare($query) or die("Error prepare: $query");
  7. $sth->execute() or die("Error prepare: $query");
  8.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Suponiendo que obtenga varias filas y columnas resultado, ¿cómo hago para acceder a cada uno de los datos columnas y filas del resultado, si no conozco el nombre de las mismas?

¡¡ Muchas gracias !!
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282

Publicidad

Re: Consulta SELECT, con campos VARIABLES

Notapor explorer » 2011-11-22 08:03 @377

En la documentación de DBI se indican algunos procedimientos para sacar información del esquema de la base de datos.

Uno de ellos es, después de hacer la consulta, mirar el contenido del atributo NAME, que contiene una referencia a un array, en que cada elemento es el nombre de la columna.

Por ejemplo, para acceder al primer nombre de columna se puede usar esto:

say "Nombre primera columna: $sth->{NAME}->[0]";

Más información en la sección Statement Handle Attributes de DBI. Ver también primer ejemplo de la sección Simple Examples.

También, usando $sth->fetchall_arrayref({}) o fetchall_hashref() se obtiene la referencia a un hash cuyas claves son los nombres de las columnas, pero con el problema conocido de que esas claves (columnas) no salen en el mismo orden en que se describe en la definición de la tabla (por ser un hash Perl, desde luego), con lo que en algunas situaciones no es deseable (algunas aplicaciones requieren conocer el orden de las columnas).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados