SoloCodigo

Programación Web y Scripting => Perl => Mensaje iniciado por: Ale123 en Miércoles 11 de Junio de 2014, 18:24

Título: arreglos bidimensionales con data de Base de Datos
Publicado por: Ale123 en Miércoles 11 de Junio de 2014, 18:24
Hola!  :angel:
 
Actualmente cuando intento extraer un data de una base de datos con:

$sth = $dbh->prepare($query); # --->Query de emplados
      $sth->execute();
         @result= $sth->fetchrow_array();

Al colocarlo en @result se me imprime siempre que la data traiga un solo registro:
Ej: Empleado con el ID 555 ----> juan, 23, 1500
y lo puedo colocar en variables
Ej: my $nombre= $result
     my $edad= $result[1]; # 23
     my $sueldo= $result[2]; #1500

Mi pregunta es como hago en el caso de que no sea un solo registro sino una lista de emplados
Ej: Todos los mayores de 20 años?
juan, 23, 1500
pedro, 42, 5500
ana, 32, 2000
      .
      .
      .
¿Como lo imprimo?   
 :ayuda:

Título: Re:arreglos bidimensionales con data de Base de Datos
Publicado por: explorer en Miércoles 11 de Junio de 2014, 21:06
Debes hacer un bucle:

(sacado del manual de DBI (http://search.cpan.org/perldoc?DBI))
Código: Perl
  1. $sth = $dbh->prepare("SELECT foo, bar FROM table WHERE baz=?");
  2.  
  3. $sth->execute( $baz );
  4.  
  5. while ( @row = $sth->fetchrow_array ) {
  6.     print "@row\n";             # sacamos toda la fila (por ejemplo)
  7. }
Otra opción es usar fetchall_arrayref(), por ejemplo, para obtener un array de array (todo el resultado en una lista de elementos, uno por registro, y cada uno es otro array, con todas las columnas).
Título: Re:arreglos bidimensionales con data de Base de Datos
Publicado por: Ale123 en Miércoles 11 de Junio de 2014, 22:52
 :gracias:   :gracias:

Ya me funcionó!!   :smartass:

#Variables
my($dbh,$sth);
$dbh = &connect();
#prepara querys:
   $sth = $dbh->prepare($query) or die("Couldn't prepare statement:" . $dbh->errstr);
#Se ejecuta el query
   $sth->execute();
#Para Imprimir
   while (($nombre, $edad, $sueldo) = $sth->fetchrow_array()) {
      print "$nombre,$edad,$sueldo\n";         
   }