Thread Perl DBI DBD::MySQL Abfrage Problem (19 answers)
Opened by gmafx at 2009-11-19 16:49

Gast gma
 2010-01-04 10:28
#129970 #129970
Hallo,

mittlerweile funktioniert bei mir das Erstellen von SQL und die Abfrage so wie ich mir das vorstelle.

Allerdings blic ke ich überhaupt nicht durch, wie ich die Ergebnisse meiner Abfragen verarbeiten soll. Bisher hatte ich meisst nur eine Zeile mit Ergebnissen erwartet und bekommen. Jetzt habe ich zunehmends ganze Listen. Diese habe ich wahlweise in Textdokumente geschrieben oder in Arrays umgeleitet, wobei ich letzteres favorisiere (denn den Inhalt der Dokumente muss ich danach ja ohnehin direkt wieder einlesen).

Da fängt mein Problem an: mittlerweile habe ich meine Abfragen in Subroutinen ausgelagert, habe aber keine Ahnung, wie ich die Daten aus der Routine wieder übergeben kann (ich bin im Lehrbuch noch nicht wirklich bei Referenzen angekommen, bzw. ich habe Verständnisprobleme).

In einem Programm, das ich als Lernvorlage benutzt habe, finde ich folgende Zeilen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use DBI;

my $DB_NAME = "test";
my $DB_USER = "xxxx";
my $DB_PASS = "xxx";

$test_data = DBI->connect("DBI:mysql:$DB_NAME","$DB_USER","$DB_PASS");

$data= checkdb($var1,$var2,$var3); ##  die Variablen var1-var3 werden in einer Schleife produziert, habe ich hier mal alles weggelassen





sub checkdb{

my $chr_id = $_[0];
my $left =  $_[1];
my $right = $_[2];

    my $query = "SELECT loc, mark, val FROM test WHERE chr_id = $chr_id AND loc BETWEEN $left AND $right";
    my $query_handle = $test_data->prepare($query);
    $query_handle->execute();

    my $data;
    while(my($loc, $mark, $val) = $query_handle->fetchrow_array()) {
        $data->{$mark}->{$loc} = $val;
    }

    return $data;
}
}



Was bedeutet dabei die Zeile

Code: (dl )
	$data->{$mark}->{$loc} = $val;

???

Die Person, die den Code entwickelt hat, meldet sich leider nicht! Was passiert an dieser Stelle?

gma

View full thread Perl DBI DBD::MySQL Abfrage Problem