SELECT Rückgabewert
Sarah
- datenbank
0 dedlfix
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!
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";