• Publicidad

Extraer varias filas de una base de datos Mysql

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Extraer varias filas de una base de datos Mysql

Notapor aredjack » 2011-02-08 11:50 @534

Hola, buenos días.

Ya he conseguido ayuda de Perl en español para algunos desarrollos pequeños que he hecho, sin embargo desde hace meses tengo un problema con una consulta que hago a una base de datos MySQL.

Mi proyecto es el siguiente: estoy usando Asterisk, para ingresar con una llamada a una base de datos y consultar las notas de un alumno X, y está funcionando sin problemas, pero solo me está leyendo la primera fila. Si el alumno tiene por ejemplo 2 materias, o sea 2 filas, no me lee la segunda fila.

He realizado varias pruebas y no me da resultado. Es lo único que me falta.

He realizado varias búsquedas de cómo consultar varias filas que estén relacionadas con una variable común.

En este mismo tutorial http://perlenespanol.com/tutoriales/bases_de_datos/como_conectarte_a_tu_database.html se menciona un while(), y de hecho, en varios tutoriales que he consultado de la red, también se mencionan, pero no me da resultado:
http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_2.html y http://www.tizag.com/perlT/perlmysqlquery.php.


A continuación adjunto una base de datos de pruebas MySQL, el connector.pl en Perl y la consulta desde Asterisk usando AGI:

Base de pruebas MYSQL

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
mysql> use pruebas;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from estudiante;
+------------+----------------+----------------------------+------+--------------------------------------+---------------------------------------+-----------+
| cedula     | nombre         | materia                    | nota | seminarios                           |                                actividades                           | adicional                             |
+------------+----------------+----------------------------+------+--------------------------------------+---------------------------------------+-----------+
| 1234567890 | Ramiro Meneses | Calculo 1                  | 9    | Red de Fibra Optica en Colombia| Feriado por carnaval 5 y 6de febrero  |           |
| 1234567890 | Ramiro Meneses | Sistemas de Comunicaciones | 8.5  | Servidores Linux avanzado            | Reunion con Representante estudiantil |           |
+------------+----------------+----------------------------+------+--------------------------------------+---------------------------------------+-----------+
3 rows in set (0.00 sec)

mysql>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Script sencillo (para base de pruebas) en Perl

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. use Asterisk::AGI;
  5. use DBI;
  6.  
  7. my $AGI = new Asterisk::AGI;
  8. my %input = $AGI->ReadParse();
  9. my $cedula = $AGI->get_variable('CEDULA');
  10.  
  11. my $dbh = DBI->connect("DBI:mysql:host=localhost;database=pruebas;port=3306","astuser","astpass",$DBI::rows)
  12.                  or die "Error en la conexion: $DBI::errstr";
  13.  
  14. my $sth = $dbh->prepare('SELECT nombre,materia,nota,seminarios,actividades FROM estudiante WHERE cedula = ?');
  15.           $sth->execute($cedula)
  16.                  or die("Error en la consulta");
  17.  
  18. my ($nombre,$materia,$nota,$seminarios,$actividades);
  19. while(($nombre,$materia,$nota,$seminarios,$actividades) = $sth->fetchrow_arrayref()) {
  20.      print join (", ", $materia,$nota),"\n";
  21. }
  22.  
  23. $AGI->set_variable('NOMBRE', "$nombre");
  24. $AGI->set_variable('MATERIA', "$materia");
  25. $AGI->set_variable('NOTA', "$nota");
  26. $AGI->set_variable('SEMINARIOS', "$seminarios");
  27. $AGI->set_variable('ACTIVIDADES', "$actividades");
  28. $sth->finish;
  29. $dbh->disconnect;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Consulta desde asterisk usando AGI

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[general]
autofallthrough=yes

[default]
include => from-pstn
include => phones

[from-pstn]
exten => s,1,Goto(interno,s,1)
exten => s,n,WaitExten(1)

[interno]
exten => s,1,Answer()
exten => s,n,Set(COUNT=1)
exten => s,n,WaitExten(1)
exten => s,n,Background(Grabacion/Bienvenida 8k)
exten => s,n,Background(Grabacion/Cedula 8K)
exten => s,n,WaitExten(5)

exten => _XXXXXXXXXX,1,Set(CEDULA=${EXTEN})
exten => _XXXXXXXXXX,n,Agi(myconnector.pl)
exten => _XXXXXXXXXX,n,Festival(${NOMBRE})
exten => _XXXXXXXXXX,n,Goto(menu,s,1)
exten => s,n,WaitExten(2)

exten => i,1,Background(Grabacion/Invalida)
exten => i,n,Goto(interno,s,1)
exten => t,1,Playback(Grabacion/No\ numero)
exten => t,n,Set(COUNT=$[${COUNT} + 1])
exten => t,n,GotoIf($[${COUNT} > 3]?5:4)
exten => t,n,Goto(interno,s,5)
exten => t,n,Playback(Grabacion/Despedida)
exten => t,n,Hangup()

[menu]

exten => s,1,Background(Grabacion/menu1)
exten => s,n,Background(Grabacion/menu2)
exten => s,n,Background(Grabacion/menu3)
exten => s,n,WaitExten(10)
exten => 1,1,Goto(Notas,s,1)
exten => 2,1,Goto(Seminarios,s,1)
exten => 3,1,Goto(Actividades,s,1)
exten => i,1,Background(Grabacion/Invalida)
exten => i,n,Goto(menu,s,1)
include => Basicas

[Notas]

exten => s,1,Background(Grabacion/notas)
exten => s,n,WaitExten(2)
exten => s,n,Festival(${MATERIA})
exten => s,n,WaitExten(1)
exten => s,n,Festival(${NOTA})
exten => s,n,WaitExten(1)
exten => s,n,EndWhile()
exten => s,n,Background(Grabacion/Menu de cierre)
exten => s,n,WaitExten(10)
exten => 1,1,Goto(Notas,s,1)
exten => 2,1,Goto(menu,s,1)
exten => i,1,Background(Grabacion/Invalida)
exten => i,n,Goto(Notas,s,1)
include => Basicas
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Agradezco mucho sus comentarios. Realmente sólo me falta esta parte, ya que sí está realizando la consulta, pero no logro definir la consulta correcta.

Soy novato en Perl pero lo he utilizado y me ha dado buenos resultados.

:?
aredjack
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-02-05 21:52 @952

Publicidad

Re:Extraer varias filas de una base de datos Mysql

Notapor explorer » 2011-02-08 12:04 @544

Bienvenido a los foros de Perl en Español, aredjack.

Yo quitaría el $DBI::rows del connect() y cambiaría fetchrow_arrayref() por fetchrow_array().
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Re:Extraer varias filas de una base de datos Mysql

Notapor aredjack » 2011-02-10 15:21 @681

explorer escribiste:Bienvenido a los foros de Perl en Español, aredjack.

Yo quitaría el $DBI::rows del connect() y cambiaría fetchrow_arrayref() por fetchrow_array().


¿Qué tal, explorer? Gracias por su rápida respuesta.

Estaba trabajando y hasta hoy regreso.

He revisado y he realizado los cambios que me sugieres, pero bueno, me he equivocado al postear mi conector en Perl, quizás por tantas pruebas hechas coloqué uno de tantos que probé.

El último que estoy usando es el siguiente:

#vim /var/lib/asterisk/agi-bin/connector.pl

#!/usr/bin/perl
use strict;

use Asterisk::AGI;
use DBI;

my $AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
my $cedula = $AGI->get_variable('CEDULA');

my $dbh = DBI->connect("DBI:mysql:host=localhost;database=baseuisrael;port=3306","astuser","astpass")
or die "Error en la conexion: $DBI::errstr";

my $sth = $dbh->prepare('SELECT nombre,apellido,materia,nota1,seminarios,actividades FROM alumno WHERE cedula = ?');

$sth->execute($cedula) or die("Error en la consulta");

my ($nombre,$apellido,$nota1,$seminarios,$actividades)

while (($nombre,$apellido,$materia,$nota1,$seminarios,$actividades) = $sth->fetchrow_array()) {
$AGI->set_variable('NOMBRE', "$nombre");
$AGI->set_variable('MATERIA', "$materia");
$AGI->set_variable('NOTA1', "$nota1");
$AGI->set_variable('SEMINARIOS', "$seminarios");
$AGI->set_variable('ACTIVIDADES', "$actividades");
}
$sth->finish;
$dbh->disconnect;

Este sí me funciona pero no me da la información de todas las filas.

Tengo una pregunta, ¿si realizo el while() en el script de Perl, llamando la variable deseada con festival desde asterisk, bastará para hacer la consulta de varias filas que quiero hacer o mejor hago consultas diferentes desde el plan de marcado?

A mi me parece que solo con el script en Perl solucionaría mi problema.

Agradezco sus comentarios.
aredjack
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-02-05 21:52 @952

Re: Extraer varias filas de una base de datos Mysql

Notapor explorer » 2011-02-10 16:02 @709

Yo no sé nada de Asterisk, salvo lo que me encuentra Google, por lo que lo que voy a decir, no sé si tendrá sentido.

Yo veo que el código está bien, pero lo que hay dentro del bucle, no lo sé. Lo que estás haciendo ahí es asignar los valores extraídos de la base de datos a unas variables... ¿no hay que realizar algo con ellas antes del siguiente ciclo del bucle?

Es decir, el bucle asigna los valores a las mismas variables... ¿no habría que cambiarlas o realizar algún proceso después de asignarlas?

Algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $i = 1;
while (($nombre,$apellido,$materia,$nota1,$seminarios,$actividades) = $sth->fetchrow_array()) {
    $AGI->set_variable("NOMBRE$i",      $nombre     );
    $AGI->set_variable("MATERIA$i",     $materia    );
    $AGI->set_variable("NOTA1$i",       $nota1      );
    $AGI->set_variable("SEMINARIOS$i",  $seminarios );
    $AGI->set_variable("ACTIVIDADES$i", $actividades);
    $i++;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer varias filas de una base de datos Mysql

Notapor aredjack » 2011-02-10 20:28 @895

Gracias por tu respuesta, explorer.

Con lo que he revisado, hay desarrolladores en la web que usan el contador en el plan de marcado de Asterisk.

Pero tu idea de usarlo en el script me parece muy buena y eso es lo que quiero, que el script realice toda navegación a través de la BDD.

Sin embargo, por ello tengo una pregunta:

¿Debo modificar la base de datos colocándole un número a cada fila?

¿o con esa variable de tu ejemplo $i, ya reconoce que es una fila diferente o la siguiente fila?

Esa es mi pregunta.

Estoy haciendo pruebas y me doy cuenta que cuando llamo a las variables nombre y materia1, perfecto, me funciona, pero cuando llamo a materia2, no me arroja materia2,:

my $i = 1;
while (($nombre,$apellido,$materia,$nota1,$seminarios,$actividades) = $sth->fetchrow_array()) {
$AGI->set_variable("NOMBRE", $nombre );
$AGI->set_variable("MATERIA$i", $materia );
$AGI->set_variable("NOTA1$i", $nota1 );
$AGI->set_variable("SEMINARIOS", $seminarios );
$AGI->set_variable("ACTIVIDADES", $actividades);
$i++;
}

exten => s,n,Festival(${MATERIA1})
exten => s,n,Festival(${MATERIA2}) -- no arroja un valor para esta variable

Mi pregunta, explorer, es, ¿cuándo se hace efectivo el sumador?

Porque si pudiera llamar las materias, desde el plan de marcado podría controlar ese cambio del sumador, dependiendo de cuántas materias tiene el estudiante.

Gracias por su respuesta; estoy investigando igualmente con información de "AGI de la mano perl".
aredjack
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-02-05 21:52 @952

Re: Extraer varias filas de una base de datos Mysql

Notapor explorer » 2011-02-11 06:26 @309

Ya te he dicho que no tengo ni idea del funcionamiento de Asterisk.

Lo único que he hecho es suponer que todas las variables deben ser distintas, así que le he agregado una variable $i, que incremento ($i++) en uno por cada fila leída de la base de datos.

He intentado buscar ejemplos de manipulación del dialplan, pero los que he encontrado se refieren al caso de consultar un único número o usuario, no ha varios. Pero estoy convencido de que deben de existir, si Asterisk permite realizar esa operación.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer varias filas de una base de datos Mysql

Notapor aredjack » 2011-04-12 03:11 @174

¿Qué tal?.

Me he perdido, pero he regresado.

Te cuento que ya tengo un dial plan que me ha manipulado los datos de la base de datos que me arroja Perl, y con un bucle en el dial plan llamo varias veces un comando hasta que se completa el número total de filas del estudiante. "En teoría", porque está llamando la misma fila dependiendo del total de filas.

He modificado la base de datos, para que tenga un único punto de referencia por fila y también el número total de filas y he tenido un avance, pero mi pregunta es la siguiente: en este momento mi variable de incremento es $fila++; cuando la utilizo en efecto sí me está sumando hasta que sea igual al total de filas, pero no me está leyendo la variable $fila por cada fila que suma.
¿Cómo puedo hacerlo gradual? O sea, ¿cómo organizo mi variable $fila en el script de Perl para que a medida que vaya sumando me vaya dando un valor diferente en el dial plan? Porque ahorita me está dando el mismo valor (4), lógicamente porque hace el bucle y llega hasta 4:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $cedula =  $AGI->get_variable('CEDULA');
  2.  
  3. my $dbh = DBI->connect("DBI:mysql:host=localhost;database=baseuisrael;port=3306","astuser","astpass")
  4.                 or die "Error en la conexion: $DBI::errstr";
  5.  
  6. my $sth = $dbh->prepare('SELECT nombre,fila,materia,nota1,Totfilas FROM alumno WHERE cedula = ?') or die ("Invalida: " . $dbh->errstr);
  7.  
  8. $sth->execute($cedula) or die ("Invalida");
  9.          
  10. my ($nombre,$fila,$materia,$nota1,$Totfilas) = $sth->fetchrow_array();
  11.  
  12. while ($fila <= $Totfilas)
  13. {
  14.     $AGI->set_variable('NOMBRE',      $nombre      );
  15.     $AGI->set_variable("FILA",        $fila        );
  16.     $AGI->set_variable("MATERIA",     $materia     );
  17.     $AGI->set_variable("NOTA1",       $nota1       );
  18.     $AGI->set_variable("TOTFILAS",    $Totfilas    );
  19.     $fila++;
  20. }
  21. $sth->finish;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


////////
Esta es otra prueba que he hecho. En este caso, pasa lo mismo pero cuando lee las otras variables, lee la última variable. La pregunta es la misma: ¿cómo hacer para que me dé los datos gradualmente?

Yo estoy llamando la variable en momentos diferentes desde el dial plan porque tengo un while(), pero la variable de Perl no cambia, se queda en el mismo valor, o sea, $fila = 4.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while (($nombre,$fila,$materia,$nota1,$Totfilas) = $sth->fetchrow_array())
  2. {
  3.     $AGI->set_variable('NOMBRE',      $nombre      );
  4.     $AGI->set_variable("FILA",        $fila        );
  5.     $AGI->set_variable("MATERIA",     $materia     );
  6.     $AGI->set_variable("NOTA1",       $nota1       );
  7.     $AGI->set_variable("TOTFILAS",    $Totfilas    );
  8.     $fila++;
  9. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Esta es la nueva base de datos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
+------------+-------------+------+--------------------+-------+----------+
| cedula     | nombre      | fila | materia            | nota1 | Totfilas |
+------------+-------------+------+--------------------+-------+----------+
| 1234567890 | EDISON LEON | 1    | ETICA PROFESIONAL  | 8,3   | 4        |
| 1234567890 | EDISON LEON | 2    | ANIMACION          | 0     | 4        |
| 1234567890 | EDISON LEON | 3    | LENGUAJE           | 7,6   | 4        |  
| 1234567890 | EDISON LEON | 4    | DIRECCION          | 5,5   | 4        |
+------------+-------------+------+--------------------+-------+----------+
7 rows in set (0.07 sec)

mysql>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Las líneas del dial plan que tengo son estas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[macro-cada_nota]

exten => s,1,Gotoif($["${NOTA${ARG1}}" = ""])?2:4)
exten => s,n,Playback(Grabacion/No\ nota)
exten => s,n,Goto(menu,s,1)
exten => s,n,Playback(Grabacion/notas${ARG1})
exten => s,n,Set(NUMFILAS=1)
exten => s,n,While($["${NUMFILAS}"<="${TOTFILAS}"])
exten => s,n,GotoIf($["${NOTA${ARG1}}" = ""]?siguiente)
exten => s,n,SayAlpha(${FILA})
exten => s,n,SayAlpha(${MATERIA})
exten => s,n,SayAlpha(${NOTA${ARG1}})
exten => s,n(siguiente),Set(NUMFILAS=$[${NUMFILAS}+1])
exten => s,n,EndWhile()
exten => s,n,WaitExten(1)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Gracias. Comprendo que no has profundizado en el tema de Asterisk, pero me parece que ya el dial plan está haciendo lo que necesitábamos, que era llamar varias veces una variable. Ahora la idea es que esta variable cambie.

Te agradezco mucho tu colaboración. :?

Realmente me sirve mucho algún comentario, estoy en aprietos.
Última edición por aredjack el 2011-04-12 03:20 @180, editado 1 vez en total
aredjack
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-02-05 21:52 @952

Re: Extraer varias filas de una base de datos Mysql

Notapor explorer » 2011-04-12 09:44 @447

No entiendo la sentencia SELECT que estás consultando. Quiero decir que en la línea 10 del primer código, solo haces una consulta, para un cierto válor de cedula y luego haces un bucle por el total de filas, que está extraído del último campo, y además, en la línea 19, incrementas el valor de línea... ¡Menudo lío!

Más lógico me parece el segundo código, donde en el bucle, se extrae cada vez una fila del resultado de la consulta. Si cedula = '1234567890', entonces el bucle se recorrerá cuatro veces, mostrando valores distintos, extraídos de la base de datos. Y entonces la línea 8 sobra, ya que $fila cambia en cada vuelta.

Si lo que quieres es $fila sea global, y que vaya sumando uno por cada fila que vas metiendo, solo tienes que crear una variable global, antes del bucle de consultas, la inicializas a 0 (o 1), y luego, dentro del bucle, usas esa variable para el campo "FILA", y la incrementas para la próxima fila. Y el valor de fila extraído de la base de datos, no lo usas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer varias filas de una base de datos Mysql

Notapor aredjack » 2011-04-16 20:29 @895

Hola explorer, gracias por tu respuesta.

Te cuento que el segundo código, no me está dando resultados por cada fila consultada. La idea, como tu mencionas, es que haya cuatro recorridos, mostrando valores distintos, extraídos de la base de datos. Ese es el dilema que tengo desde un inicio. Aparentemente el fetchrow_array() debería funcionar pero no está cambiando los valores.

Ahora, hago que $fila sea una variable global o tomo otra variable como la que ya me habías indicado $i, y la inicializo a 0 (o 1), luego dentro del bucle, la estoy igualando a "FILA" y la incremento con $i++, pero tampoco me está aumentando con cada interacción... Sencillamente me está haciendo el bucle rápidamente y me da el valor final que es el total de las filas, o más bien con este while ( X = $sth->fetchrow_array ()), me está enviando directamente a la última fila. Desde el dial plan llamo a la variable FILA y me da el número 4 cuando la llamo...

¿Cómo hacer para que me muestre paulatinamente el valor de las filas o cuando coloque while ( X = $sth->fetchrow_array ()) no me mande directamente a la última fila...? Por que eso es lo que está haciendo.

El código que tengo ahora es este:

my $si = 1;

while ( my ( $nombre, $fila, $materia, $nota1, $Totfilas ) = $sth->fetchrow_array() ) {
$AGI->set_variable( 'NOMBRE', $nombre );
$AGI->set_variable( "FILA", $si );
$AGI->set_variable( "MATERIA", $materia );
$AGI->set_variable( "NOTA1", $nota1 );
$AGI->set_variable( "TOTFILAS", $Totfilas );
$si++;
}
$sth->finish;

La situación ahora es que cuando desde el dial plan llamo a FILA, me da el valor de la última fila, o sea, 4.

He visto esta página: http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_2.html, y me dice, o no sé si entiendo mal, que cuando hago una sentencia como:

my @row;
while (@row = $sth->fetchrow_array) { # retrieve one row
print join(", ", @row), "\n";
}

me va a arrojar solo una fila... (aunque en este caso está trabajando con un array).

Mi pregunta es: como al parecer después de llamar diferentes veces a las variables y no me está dando resultado con un fetchrow array(), ¿podrá funcionar con fetchrow_arrayref o con fetchrow_hashref?

Como último comentario, en la página que he mencionado, me dice que con una base como esta:

column a | Column b
---------+---------
1 | one
2 | two

... puedo obtener cada fila como hashref con el siguiente código:

$ref = $sth->fetchall_arrayref({});
print "Number of rows returned is ", 0 + @{$ref}, "\n";
print join (", ", keys %{$ref->[0]}), "\n";
foreach $r (@{$ref})
{
print join(", ", (values %$r)), "\n";
}
print "Number of rows returned is ", 0 + @{$ref}, "\n";
print join (", ", keys %{$ref->[0]}), "\n";
foreach $r (@{$ref})
{
print join(", ", (values %$r)), "\n";
}

Number of rows returned is 2
a
1
2

.. lo que entiendo es que $ref será la columna a.

¿Me pueden, por favor, dar su opinión?

Gracias.

En todo caso, sin usar un while() y poder obtener 2 filas ¿cómo se haría con una BDD como la mía?

Agradezco mucho su ayuda. :roll: :?
aredjack
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-02-05 21:52 @952

Re: Extraer varias filas de una base de datos Mysql

Notapor explorer » 2011-04-17 08:16 @386

Yo no veo ningún problema en los códigos que estás mostrando.

Tú mismo puedes verlo, si haces un programa pequeño que abra la base de datos, haga la consulta, y saque los datos a pantalla. Así estarás seguro de qué es lo que quieres obtener. Y luego lo trasladas al programa principal. Si al hacer el programa pequeño, no sale lo que quieres, lo publicas aquí y lo vemos.

Y no, $ref no está guardando los datos de la columna a, sino que es una referencia a un hash que contiene los pares campo/valor de cada línea del resultado de la consulta.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Bases de datos

¿Quién está conectado?

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

cron