Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10982[/thread]

DBI: prepare oder selectrow_array bei einem Datensatz

Leser: 2


<< >> 3 Einträge, 1 Seite
Froschpopo
 2007-12-09 08:29
#103642 #103642
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Betrifft: DBI

ist es eigentlich sinnvoll, einzelne Abfragen, also sprich: Es wird nur ein einzelner Datensatz erwartet, auch mit prepare() vorzubereiten?
Oder ist hierfür selectrow_array besser geeignet?
Ich habe einzel-Abfragen nämlich bisher immer mit letzterem umgesetzt.

Ich möchte gern ein Modul konstruieren, das einfach Resultsets zurückgibt. Quasi so nach dem Schema:
Code (perl): (dl )
1
2
3
my $db = MyModule->new($dbh);
my $result_id = $db->search($statement);
print $result_id->get,"\n";
Strat
 2007-12-09 13:02
#103646 #103646
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
selectrow_* macht (ebenso wie bei do) hinter den Kulissen sowieso ein prepare/execute, von daher kann man das recht gut verwenden, vor allem, weil es teilweise den Code besser lesbar macht.
Ich selbst kapsle allerdings die Abfrage lieber in eine eigene Sub (z.B. mit Namen fireSelect), in der ich dann prepare + fehlerabfrage, execute + ev. Parameter + fehlerabfrage, und das statement-handle zurückgeben.
und vielleicht noch eine weitere sub namens fireSelect_getOneRow, die dann die fireSelect ausfuehrt, einmal $sth->fetchrow_hashref oder so ausführt und den Hash zurückgibt.

Sowas hat den Vorteil, dass man bei Bedarf zentral ein die Selects mitloggen und gegebenenfalls einfach profilen kann

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
sub fireSelect {
    my( $dbh, $sql, @params ) = @_;

    my $sth = $dbh->prepare( $sql )
        or .... Fehlerabfrage;
    $sth->execute( @params )
        or ... Fehlerabfrage

  return $sth;
}

oder so aehnlich
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Froschpopo
 2007-12-09 13:51
#103649 #103649
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Sowas hatte ich auch vor :)
Blos wollte ich das Ergebnis in einem Modul cachen, um es dann später mit einer get-Funktion aus $self abzuholen :)
Quasi so eine art Daten-Storage.
Danke für deine Meinung :)
<< >> 3 Einträge, 1 Seite



View all threads created 2007-12-09 08:29.