Schrift
[thread]8039[/thread]

IF-Anweisung: Falcher boolean Wert wird bestimmt



<< >> 9 Einträge, 1 Seite
sonnenschein
 2006-05-31 15:31
#66829 #66829
User since
2006-05-31
2 Artikel
BenutzerIn
[default_avatar]
Hallo, ich bin noch Neuling in der Sprache Perl.

In meinem Perl Skript habe ich eine Datenbankabfrage. Das Ergebnis der Abfrage speichere ich in der Variablen @row.

Bei der Ausgabe der Variablen sehe ich, das sie den Wert 0 hat. Bei einer anderen Datenbankabfrage hat sie z.B. den Wert 5.

Die If-Anweisung, welche auf 0 prüft sagt false und gibt den Wert 0 aus?! Was mache ich falsch?
Ausgabe aus IF-Anweisung: False: 0

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my $dbh = DBI->connect( $conn,$user,$pass) || die "Keine Verbindung zur Datenbank"; 
my $sql = "SELECT count(netzgebiet) FROM tmp_report";
my $sth = $dbh->prepare($sql);
$sth->execute();

@row = $sth->fetchrow_array;

if(@row == 0 ){
   print TRANSLATE "\nTrue: ";
       print TRANSLATE @row;
}
else {
   print TRANSLATE "\nFalse: ";
       print TRANSLATE @row;
}

Ich habe schon alles mögliche ausprobiert (Try und Error) wie z.B.
@row = 0       liefert mit beiden Beispielen true
@row > 1       liefert mit beiden Beispielen false
@row eq '0'    liefert mit beiden Beispielen false
@row = -1     liefert mit beiden Beispielen true

Vielen Dank schonmal für eure Hilfe!
GwenDragon
 2006-05-31 15:52
#66830 #66830
User since
2005-01-17
14785 Artikel
Admin1
[Homepage]
user image
fetchrow_array gibt bei einem Fehler ein leere Liste zurück.
Teste doch beitte mal mit
Code: (dl )
die $sth->errstr if $sth->err;
, welcher Fehler vorliegt;\n\n

<!--EDIT|GwenDragon|1149076425-->
betterworld
 2006-05-31 15:55
#66831 #66831
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
@row ist ein Array. @row == 0 fragt, ob @row 0 Elemente hat (also leer ist). print @row gibt alle Werte von @row aus. In Deinem Array steht offenbar der Wert 0, daher ist das Array nicht leer. Vielleicht moechtest Du vertiefenderweise perlintro lesen.
sonnenschein
 2006-05-31 16:09
#66832 #66832
User since
2006-05-31
2 Artikel
BenutzerIn
[default_avatar]
Danke, habe das Problem gelöst. Ich habe mich von der Ausgabe irritieren lassen, da ich nur einen Wert im Array habe.

Habe die Abfrage aktualisiert.
Code: (dl )
1
2
3
if(@row[0] == 0) {

}
GwenDragon
 2006-05-31 16:21
#66833 #66833
User since
2005-01-17
14785 Artikel
Admin1
[Homepage]
user image
@row[0] == 0 bedeutet Erster Wert im Array @row gleich Null
während
@row == 0 bedeutet Anzahl der Werte des Arrays gleich Null\n\n

<!--EDIT|GwenDragon|1149078191-->
betterworld
 2006-05-31 16:24
#66834 #66834
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Bitte schreibt $row[0] statt @row[0]. Ferner sollte am Anfang des Scriptes immer "use warnings;" direkt unter "use strict;" stehen, damit perl eine Warnung bei missverstaendlichen Schreibweisen wie @row[0] ausgibt.\n\n

<!--EDIT|betterworld|1149078500-->
GwenDragon
 2006-05-31 16:26
#66835 #66835
User since
2005-01-17
14785 Artikel
Admin1
[Homepage]
user image
[quote=betterworld,31.05.2006, 14:24]Bitte schreibt $row[0] statt @row[0].[/quote]
Autsch, ich Schnellvertipperin, das kommt vom Kopieren.
Natürlich muss es $row[0] sein.
ptk
 2006-06-01 03:09
#66836 #66836
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=betterworld,31.05.2006, 14:24]Bitte schreibt $row[0] statt @row[0].[/quote]
Wieso, so kann man sich gleich an Perl6 gewöhnen :-)
renee
 2006-06-01 10:44
#66837 #66837
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Noch sind wir aber bei Perl5 :D
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 9 Einträge, 1 Seite



View all threads created 2006-05-31 15:31.