Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5749[/thread]

if Bedingung



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
jan10001
 2003-09-24 00:30
#55386 #55386
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Würde so etwas eigentlich funktionieren oder gibt das einen Syntax Error?

Code: (dl )
1
2
3
if ( my ($test1_id, $test2_id) = $dbh->selectrow_array( "SELECT ....  ") > 0 ) {
...
}
format_c
 2003-09-24 00:42
#55387 #55387
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Syntax Error nicht aber die Bedinung ist IMHO immer wahr.
Die Liste ($test1_id,$test2_id) ist immer skalaren Kontext immer 2 egal was der Inhalt der Variablen ist.

Gruß Alex
jan10001
 2003-09-24 00:53
#55388 #55388
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Hm irgenwie muß es doch gehen.
format_c
 2003-09-24 01:09
#55389 #55389
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Was willst du machen.
Wenn mehr als null Reihen von der Abfrage betroffen sind soll er in die Bedingung gehen?
Ich denke mal mit so nem Kraftakt wie du ihn oben gepostet hast wirst du es wohl nicht schaffen.

Gruß Alex
jan10001
 2003-09-24 01:56
#55390 #55390
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Er soll in die Schleife gehen, wenn die Abfrage etwas zurückgibt.

Zur Fehlerprüfung starte ich eine komplexe Abfrage bei der eine Zeile mit Werten zurückgegeben wird falls alle gesuchten Werte gefunden wurden.
format_c
 2003-09-24 02:04
#55391 #55391
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
achso.
Ich tät das so machen:
Code: (dl )
my $sth = $dbh->prepare('SELECT ....') or fehlerabfangfunktion(DBI::errstr);

Oder so.
In der Funtion kannst du dann irgendwas machen und/oder mit DBI::errstr anfangen.

Gruß Alex
jan
 2003-09-24 03:10
#55392 #55392
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
das wird aber nichts bringen, format_c, weil damit ja nur das prepare geprüft wird, nicht aber, ob auch daten zurückkommen ...

warum nutzt du keine hashref? ist zwar gerinfügig unperformanter aber doch viel netter zu benutzen. erst, wie format_c schrieb, das prepare und dann
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
if(my $resultref = $sth->fetchrow_hashref)
{
# hier wenn ergebnisse da sind
print $$hashref{'feldname'};
}
else
{
# keine ergebnisse
}
format_c
 2003-09-24 10:36
#55393 #55393
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Dann fehlt aber noch ein execute.
Also falls im Statement irgendwelche Fehler vorkommen gibt prepare 0 zurück.
Wenn dann irgendwas bei der ausführung schief geht warum auch immer meckert execute.
hast aber recht. Ich bin vom falschen Blickpunkt rangegangen.

Gruß alex
jan10001
 2003-09-24 13:26
#55394 #55394
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Weil nur eine Zeile zurückgegeben wird wollte ich eigentlich auf prepare und execute verzichten. Früher habe ich es immer so gemacht, daher auch die Frage ob das mit den Sklaren geht.:
Code: (dl )
1
2
3
if ($dbh->selectrow_array(" select .... ") > 0) {
.....
}
jan
 2003-09-24 18:00
#55395 #55395
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
stimmt, execute fehlt noch.

naja, andere möglichkeit wäre, dir das in einen array packen zu lassen und dessen länge zu prüfen.
if(scalar @results = $dbh->selectrow_array("....") > 0)
das sollte hinhauen.
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2003-09-24 00:30.