IF/ELSE
Jessica
- perl
Hallo!
Leider komme ich unter Perl (Modul DBI::ODBC) mit der folgenden IF/ELSE-Anweisung nicht weiter. Die IF-Schleife soll abfragen, ob ein passender Eintrag in der DB vorhanden ist oder ansonsten an ELSE weitergeben. Es wird aber immer nur die IF-Bedingung erfüllt (?), auch wenn überhaupt kein passender Eintrag in der Access-DB vorhanden ist (rows ==0). Kann mir jemand von Euch weiterhelfen ?
Hier die Bedingung -->
-----------------------------------------
if ($STH->rows != 0) {
print <<HERE_TEXT;
Content-type:text/html
<html>
<head>
<title>Antwort</title>
</head>
<body>
<center>
<h1>Treffer:</h1>
HERE_TEXT
} else {
print <<HERE_TEXT2;
Content-type:text/html
<html>
<head>
<title>Antwort</title>
</head>
<body>
<center>
<h1>KEIN Treffer:</h1>
HERE_TEXT2
}
-------------------------------------------------
Danke Jessica.
Versuche es mit if ($STH->rows > 0) ...
Versuche es zur Kontrolle mit print $STH->rows;
Versuche es mit if ($STH->rows > 0) ...
Versuche es zur Kontrolle mit print $STH->rows;
Die Ausgabe für $STH->rows > 0 oder $STH->rows != 0 ist immer -1!
Gruß Jessica.
Hallo,
Unabhängig von dem eigentlichen Problem: IF ist beim besten Willen keine Schleife! Es wundert mich das sich bisher noch niemand darüber hergemacht hat;-)
cu Benedikt Loepp
Hallo,
if ($STH->rows != 0) {
Zitat aus der DBI_Doku:
Returns the number of rows affected by the last row affecting command, or -1 if the number of rows is not known or not available.
Und weiter:
... So use of the rows method or $DBI::rows with SELECT statements is not recommended.
Fazit:
Löse es anders. z.B.könntest Du beim ersten erfolgreichen fetchrow_*() den allgemeinen Kopf ausgeben und, wenn das nicht erfolgreich war, den Kein-Treffer-Kopf.
btw. $STH entspricht nicht den Perl-üblichen Styleguides. Näheres dazu in perldoc perlstyle.
Grüße
Klaus