Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Perl: DBI Rückgabe bei keinem Treffer

  1. #1
    Registrierter Benutzer Avatar von baron_huehnerho
    Registriert seit
    06.01.2002
    Ort
    Berlin
    Beiträge
    10

    Angry Perl: DBI Rückgabe bei keinem Treffer

    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

  2. #2
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231
    geht denn nicht einfach -->
    Code:
    $foo = $dbh->selectall_arrayref($query) or die "Keine Daten";
    Falls nicht, versuch doch ersteinmal die Anzahl der Datensaetze zu ermitteln -->
    Code:
    $dbh->selectrow_arrayref($query);
    Wenn dieses 0 ist, kann man auf die all_array Abfrage verzichten.

    T;o)Mes
    Geändert von tomes (18-06-2003 um 18:13 Uhr)
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  3. #3
    Registrierter Benutzer Avatar von baron_huehnerho
    Registriert seit
    06.01.2002
    Ort
    Berlin
    Beiträge
    10
    Also or die funzt nicht.... aber das zwiete geht.... nur ist dann mal wieder die nette Meldung bei der Abfrage:

    Code:
    $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

  4. #4
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231
    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
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •