Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » Bases de Datos » Problema al intentar leer datos de una base de datos MySQL Responder al tema
Nuevo tema


Página 1 de 1  [ 3 mensajes ] 
 
Nota 2008-11-27 12:15 @552

Perlero Nuevo
Registrado: 2008-11-27 12:03 @544
Mensajes: 7
Problema al intentar leer datos de una base de datos MySQL
Hola, ¿qué tal?

Quería consultar porque me sale el siguiente error:

Código:
Can't locate object method "fetchrow_array" via package "DBI::db" at /var/lib/asterisk/agi-bin/leodebd.pl line 58.


al intentar correr el siguiente código:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

#ppm>install dbi-mysql
use warnings;
use strict;
use DBI;
use DBD::mysql;

$|=1;

# Setup some variables
my %AGI;
my $fecha;
my $caller;
my $called;
my $tipodellamada;
my $path;

my $dbhost="20.1.10.8";
my $dbname="database";
my $dbuser="user";
my $dbpass="user";
my $genres;

my $dbh;
my $dsn;

my $escuchado;
my $funcionario;
my $fechahora;
my $archivo;
my $uniqueid;
my $sth;

my @data;
##########################################################
#Create a DB connection.                                 #
##########################################################
sub connect_db() {
        my $dsn = "DBI:mysql:database=$dbname;host=$dbhost";
        $dbh->disconnect if $dbh;
        $dbh = DBI->connect($dsn, $dbuser, $dbpass);
}


sub loaddata() {
        $dbh->do("SELECT * FROM grabaciones WHERE escuchado=0");
}

$genres=&connect_db;
$genres=&loaddata();

#creando enlace o coneccion dbh=>database handle


# ciclo de lectura de todos los renglones de la tabla
$sth = $dbh->prepare("SELECT * FROM grabaciones WHERE escuchado=0");
if ($sth && $sth->execute()) {@data = $dbh->fetchrow_array(); }

while (@data) {
#($escuchado, $funcionario, $fechahora, $archivo, $uniqueid)
        #print "SET VARIABLE escuchado $escuchado \n";
        #print "SET VARIABLE funcionario $funcionario \n";
        #print "SET VARIABLE fechahora $fechahora \n";
 #print "SET VARIABLE archivo $archivo \n";
        #print "SET VARIABLE uniqueid $uniqueid \n";
        print "@data"

};

# cerrando tabla, instruccion y coneccion

$dsn->finish;

$dbh->disconnect();

#print my $q->hr();


¡Les agradezco cualquier ayuda!
¡Saludos!


Nota 2008-11-27 14:53 @661
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Bienvenido a los foros de Perl en Español, Agus.

Prueba a cambiar
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
$dbh->fetchrow_array()

por
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
$sth->fetchrow_array()


fetchrow_array() se debe referir a la sentencia SQL que se preparó (prepare()) y luego se ejecutó (execute()).

Repasa las primeras líneas de la documentación de DBI. Verás que pone este orden:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
$dbh      =  DBI->connect($data_source, $username, $auth, \%attr);
$sth      = $dbh->prepare($statement);
$rv       = $sth->execute;
@row_ary  = $sth->fetchrow_array;


Todo el mundo está de acuerdo en que quien hizo la documentación de este módulo, lo hizo muy mal en cuanto a la elección de las variables de ejemplo. Él pensaba que, efectivamente, son ejemplos, pero el caso es que casi todos los programas en los que interviene DBI, los programadores suelen elegir esas mismas variables... y como son tan parecidas, es muy fácil equivocarse.

Solución: usar otros nombres de variables, un poco más largas y claras.

_________________
JF^D Perl programming


Nota 2008-11-28 06:34 @315

Perlero Nuevo
Registrado: 2008-11-27 12:03 @544
Mensajes: 7
¡¡¡¡Muchas gracias, explorer!!!!

¡¡La verdad que ya estaba pensando en cambiar de lenguaje de programación ya que no podía solucionar el problema!!

¡¡Saludos!!


Responder al tema  [ 3 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO