Probleme mit $sth->fetchrow_array ()
Christian
- perl
Hallo Leutz!
Hab hier ein kleines Problem, für das ich keine Lösung finde:
SQL - Tabelle:
tblAufpreise
ID |fk_ReiseID |Leistung |Aufpreis
1 |4 |Blah... |10.0
2 |4 |Zeuch... |NULL
Perl - Code:
...
my $id;
my @datensatz;
$id = 4;
$sth = $dbh->prepare ("SELECT Leistung, Aufpreis FROM tblAufpreise WHERE fk_ReiseID = ?");
$sth->execute ($id);
while (@datensatz = $sth->fetchrow_array ())
{
$datensatz[1] = sprintf ("%.2f", $datensatz[1]);
print p ("Aufpreis: $datensatz[1]");
}
...
Und nun bekomme ich folgenden Fehler, weil das Element mit Index 1 in @datensatz nicht vorhanden ist, weil der Satz mit der ID 2 im Feld 'Aufpreis' einen echten Nullwert enthält:
[Tue Apr 15 15:20:05 2003] DETAILS.pl: Use of uninitialized value in sprintf at G:\transfer\www_root\feisinger\user\cgi-bin\DETAILS.pl line 430.
Was kann ich dagegen tun? Wie kann ich das abfragen oder abfangen?
Danke im vorraus!
Gruß Christian
Und nun bekomme ich folgenden Fehler, weil das Element mit Index 1 in @datensatz nicht vorhanden ist, weil der Satz mit der ID 2 im Feld 'Aufpreis' einen echten Nullwert enthält:
[Tue Apr 15 15:20:05 2003] DETAILS.pl: Use of uninitialized value in sprintf at G:\transfer\www_root\feisinger\user\cgi-bin\DETAILS.pl line 430.
Was kann ich dagegen tun? Wie kann ich das abfragen oder abfangen?
Den Wert belegen.
$datensatz[1] = sprintf ("%.2f", $datensatz[1] || '');
Struppi.
Den Wert belegen.
$datensatz[1] = sprintf ("%.2f", $datensatz[1] || '');
Struppi.
Merci!
Kann ich irgendwie Abfragen, ob es das Element mit dem Index 1 irgendwo gibt?
if ($datensatz[1] == undef)
{
...
}
geht nicht. Ich möchte die Zuweisung von 0 gerne vor dem sprintf machen, da die Schleife noch andere Verarbeitungen ausführt. Wie zum Beispiel Zeichenkonvertierung.
Halihallo Christian
Kann ich irgendwie Abfragen, ob es das Element mit dem Index 1 irgendwo gibt?
if ($datensatz[1] == undef)
{
...
}
geht nicht.
Sollte aber...?
Besser wäre jedoch
unless (defined($datensatz[1])) {...}
genauso, wie man eine Variable mit undef($variable) zerstört und nicht über
$variable=undef;
Ich möchte die Zuweisung von 0 gerne vor dem sprintf machen, da die Schleife noch andere Verarbeitungen ausführt. Wie zum Beispiel Zeichenkonvertierung.
was ging denn mit if ($datensatz[1] == undef) nicht? - Hast du geprüft, ob da auch kein
'' oder 0 drin steht? - undef != '' != 0
bei $var = '' oder 0 oder undef liefert
if ($var) {} false,
bei $var = '' oder 0 oder undef liefert
if (defined($var)) nur false bei undef.
Viele Grüsse
Philipp