PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl: DBI Rückgabe bei keinem Treffer



baron_huehnerho
18-06-2003, 14:19
Hallo!

Ich habe folgendes Problem:
Ich bastle an nem Script in Perl (IRC Bot) und der soll was mit einer MySQL DB machen... ich habe ohne Probleme das ganze Ding mit dem DBI Modul auf die reihe bekommen, doch wenn jetzt eine Anfrage (also die Anfragen kommen vom user per IRC,d as klappt auch) vom User einen Datensatz anfragt, den es nicht gibt muss ich das ja abfangen... und ich weiss nicht was dieses Modul da zurückgibt....

$dbh = DBI->connect($dsn, $dbuser, $dbpasswd);
$query = "SELECT * FROM $table WHERE $head = '$suche'";
$foo = $dbh->selectall_arrayref($query);

das ist der Code an der stelle.... $suche ist ebend z.B. der zu suchende Titel von einem Film in der Table Filme und der Überschrift (head) Titel... wenn der Titel existiert funktionier alles, aber wenn er nicht da ist geht's nicht... besser, das passiert gar nichts...

Ich habe gedacht, dass er dann nen false oder so zurückgibt, aber nein... die Variable ist dann weder leer noch undefiniert.. nichts... ich habe da keine Idee mehr....

Besten Dank schonmal

tomes
18-06-2003, 18:10
geht denn nicht einfach -->

$foo = $dbh->selectall_arrayref($query) or die "Keine Daten";

Falls nicht, versuch doch ersteinmal die Anzahl der Datensaetze zu ermitteln -->


$dbh->selectrow_arrayref($query);

Wenn dieses 0 ist, kann man auf die all_array Abfrage verzichten.

T;o)Mes

baron_huehnerho
21-06-2003, 10:49
Also or die funzt nicht.... aber das zwiete geht.... nur ist dann mal wieder die nette Meldung bei der Abfrage:



$query = "SELECT * FROM $table WHERE $head = '$suche'";
$test = $dbh->selectrow_arrayref($query);
if($test == 0){
print $sock "PRIVMSG $channel_akt :Niemand bietet $suche an\n";
}else{
$foo = $dbh->selectall_arrayref($query);
...


bei der ==0 abfrage kommt dann immer

Use of uninitialized value in numeric eq (==) at ./sql.pl line 23.

Aber damit kann man ja leben

besten dank :D

tomes
21-06-2003, 11:10
bei der ==0 abfrage kommt dann immer


:Use of uninitialized value in numeric eq (==) at ./sql.pl line 23.

Muss auch, da --> $test = $dbh->selectrow_arrayref($query); ein Array ist.
Da musst du dann schon richtig darauf zu greifen.
Da ich mit DBI noch nicht direkt gearbeitet habe, ich benutze immer DBD::mysql, musst ich mal raten.
$test->[0] koennte die Anzahl der gefundenen rows enthalten (oder [1] ). Musst du mal ausprobieren.

T;o)Mes