joha: aus einer Datenbank lesen

Hallo zusammen

ich würde gerne aus einer SQL-Datenbank, die stunden eines monats rauslesen und diese danach ausgeben! Ich versuchte es wie folgt zu lösen, leider stimmt etwas nicht, was ist falsch?

$select = "select zeit_stunden form zeit
           where zeit_jahr = '$aktuelles_jahr'
           and zeit_monat = '$aktueller_monat'";
my($sollstunden) = $dbh->prepare($select);
$sollstunden->execute();
$hash_sollstunden =  $sollstunden->fetchrow_hashref;
$sollstunden = $hash_sollstunden->{zeit_monat};

print "$sollstunden";

Grüsse joha

  1. $select = "select zeit_stunden form zeit
               where zeit_jahr = '$aktuelles_jahr'
               and zeit_monat = '$aktueller_monat'";

    »»

    Hi!

    Ich würde mal aus "form" "from" machen.

    PAssiert mir auch dauernd ;-)

    Henk

    1. Ich würde mal aus "form" "from" machen.

      PAssiert mir auch dauernd ;-)

      Ouuu, danke!!
      Habe es im code verbessert, es geht aber leider immer noch nicht?!

      Was ist sonst noch falsch?

      Grüsse joha

      1. Ich würde mal aus "form" "from" machen.

        PAssiert mir auch dauernd ;-)

        Ouuu, danke!!
        Habe es im code verbessert, es geht aber leider immer noch nicht?!

        "Geht nicht" geht nicht! Problembeschreibung bitte!

        Was geht nicht? Was wird ausgegeben? Was sollte ausgegeben werden? Werden Fehlermeldungen ausgegeben, oder Warnungen?

        Hast du Perl mit dem "-w"-Schalter gestartet?
        #!/usr/bin/perl -w

        Hast du "use strict;" benutzt?

        Ohne weitere Angaben geht nichts.

        - Sven Rautenberg

  2. Hallo,

    $select = "select zeit_stunden form zeit
               where zeit_jahr = '$aktuelles_jahr'
               and zeit_monat = '$aktueller_monat'";
    my($sollstunden) = $dbh->prepare($select);

    Bist Du Dir sicher, ob das auch funktioniert hat?

    Es ist besser, wenn Du immer überprüfst, ob Funktionen, die potentiell einen Fehler produzieren können, auch das richtige Ergebnis liefern.
    Also mindestens
    my($sollstunden) = $dbh->prepare($select) or die "Konnte prepare für '$select' nicht erfolgreich ausführen: $!";

    Dann würdest Du auch erkennen, daß am Select-Statement was nicht stimmen kann (form).

    $sollstunden->execute();

    Auch hier, wie auch bei fetchrow_hashref, eine Fehlerbehandlung einführen.

    $sollstunden = $hash_sollstunden->{zeit_monat};

    Hmm, ersten wird im Selectstatement 'zeit_monat' nicht mit abgefragt, wahrscheinlich meintest Du 'zeit_stunden'.
    Dann sollten IMHO Textkonstanten immer gequotet werden um eventuelle Doppeldeutungen bzw. Seiteneffekte zu vermeiden.
    Und außerdem finde ich es problematisch, wenn Du dieselbe Variable für zwei unterschiedliche Bedeutungen verwendest, einmal als Statement-handle, ein anderes mal zur Speicherung der Stunden.
    Du solltest Dir daher irgendwas einfallen lassen, um die Bedeutung der Variable bereits am Namen zu erkennen, also z.B.

    my $sth_sollstunden = $dbh->prepare($select) or die "Konnte prepare für '$select' nicht erfolgreich ausführen: $!";
    my $val_sollstunden = $hash_sollstunden->{'zeit_monat'};

    (Irgendwas in der Art, muß ja nicht unbedingt so sein)

    Grüße
      Klaus