• Publicidad

Problema al intentar leer datos de una base de datos MySQL

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

Problema al intentar leer datos de una base de datos MySQL

Notapor Agus » 2008-11-27 12:15 @552

Hola, ¿qué tal?

Quería consultar porque me sale el siguiente error:

Código: Seleccionar todo
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:

Sintáxis: [ Descargar ] [ Ocultar ]
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();
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


¡Les agradezco cualquier ayuda!
¡Saludos!
Agus
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2008-11-27 12:03 @544

Publicidad

Notapor explorer » 2008-11-27 14:53 @661

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

Prueba a cambiar
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$dbh->fetchrow_array()
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

por
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$sth->fetchrow_array()
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$dbh      =  DBI->connect($data_source, $username, $auth, \%attr);
$sth      = $dbh->prepare($statement);
$rv       = $sth->execute;
@row_ary  = $sth->fetchrow_array;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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 & 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

Notapor Agus » 2008-11-28 06:34 @315

¡¡¡¡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!!
Agus
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2008-11-27 12:03 @544


Volver a Bases de datos

¿Quién está conectado?

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

cron