Sarah: SELECT Rückgabewert

Hallo zusammen,,
ich weiß leider nicht genau, ob die Frage hierhin gehört oder ins Perl-Forum.

Ich rufe aus einem Perl-Skript eine select-Abfrage einer MySQL-Datenbank auf. Das funktioniert auch solange die Tabelle entsprechende Zeilen enthält. Wie kann ich die Rückgabe überprüfen? Normalerweise gibt mysql ja folgendes aus:
mysql> select * from patient where vorname="hans";
Empty set (0.00 sec)

Der Aufruf unter perl sieht wie folgt aus:
$DSN = "DBI:mysql:database=patientendatenbank";

my $dbh = DBI->connect($DSN,"root","")or die "Error conneting to database";

$sth = $dbh->prepare("SELECT * from patient where  vorname='$vorname' AND

nachname='$nachname' AND geburtsdatum='$geburtsdatum'");
$sth->execute();
while($ref = $sth->fetchrow_hashref()){
hier steht html code
}
$sth->finish();
$dbh->disconnect();
exit;

Wie kann ich das überprüfen? Wenn die Abfrage korrekt war wird eine HTML-Seite aufgerufen und wenn die Tabelle die Daten nicht enthält sollte das wenn möglich auch angezeigt werden.

Vielen Dank,
Sarah!

  1. echo $begrüßung;

    Ich rufe aus einem Perl-Skript eine select-Abfrage einer MySQL-Datenbank auf. Das funktioniert auch solange die Tabelle entsprechende Zeilen enthält. Wie kann ich die Rückgabe überprüfen?

    Du könntest die Datensätze mit SELECT COUNT(*) ... zählen. Wenn du sie aber sowieso brauchst, kannst du deren Anzahl beim Auslesen in deiner while-Schleife zum einen mitzählen, oder zum anderen nachschauen, ob das DBI dir diese Information liefert. Die DBI-Dokumentation sollte es aufführen, vermutlich hat es etwas mit "numrows" im Namen (ich kenne mich mit Perl nicht weiter aus). Beachte aber, dass dieser Wert/diese Funktion/wasauchimmer normalerweise erst nach dem vollständigen Abfragen des Resultsets die richtige Antwort gibt.

    echo "$verabschiedung $name";