Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2023
    Messaggi
    2

    [PERL] Errore su chiamata a funzione disconnect() accedendo a MySQL

    mi da questo errore da quando ho cambiato server
    Can't call method "disconnect" on an undefined value at

    ho installato tutte le librerie ma da sempre questo errore oppure
    "prepare" nel file functions_mysql.cgi valore non definito ma non so come correggere è uno script che ho da molti anni
    ed è sempre andato bene nonostante i cambi di server

    queste le parti incriminate

    sub click_connect {
    $dbh->disconnect();
    my ($database, $host, $username, $password) = @_;
    $dbh = DBI->connect("DBI:mysql:$database:$host", "$username", "$password");
    die ("database connect failed") unless $dbh;
    }
    ###############################################

    ###############################################
    sub disconnect {
    #$sth->finish();
    $dbh->disconnect();
    undef $sth;
    }

    sub mySQL {
    my ($statement) = @_;
    my $sth = $dbh->prepare($statement);
    $sth->execute || die "Bad statement ($statement) $DBI::errstr";
    return $sth;
    }

    qualcuno è esperto di perl?

  2. #2
    ciao,
    mi mancano le chiamate alle funzioni,
    ma da quello che vedo, qui:

    codice:
    sub click_connect {
        $dbh->disconnect();
    ...
    }

    $dbh->disconnect();
    sta effettuando una disconessione a una connessione a db mai creata.
    Dovrebbe bastare commentarla:

    codice:
    #$dbh->disconnect();
    Quote Originariamente inviata da grabro Visualizza il messaggio
    mi da questo errore da quando ho cambiato server
    Can't call method "disconnect" on an undefined value at

    ho installato tutte le librerie ma da sempre questo errore oppure
    "prepare" nel file functions_mysql.cgi valore non definito ma non so come correggere è uno script che ho da molti anni
    ed è sempre andato bene nonostante i cambi di server

    queste le parti incriminate

    sub click_connect {
    $dbh->disconnect();
    my ($database, $host, $username, $password) = @_;
    $dbh = DBI->connect("DBI:mysql:$database:$host", "$username", "$password");
    die ("database connect failed") unless $dbh;
    }
    ###############################################

    ###############################################
    sub disconnect {
    #$sth->finish();
    $dbh->disconnect();
    undef $sth;
    }

    sub mySQL {
    my ($statement) = @_;
    my $sth = $dbh->prepare($statement);
    $sth->execute || die "Bad statement ($statement) $DBI::errstr";
    return $sth;
    }

    qualcuno è esperto di perl?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2023
    Messaggi
    2

    adesso da errore Can't call method "prepare" allego tutto il file

    sub mySQL {
    my ($statement) = @_;
    my $sth = $dbh->prepare($statement);
    $sth->execute || die "Bad statement ($statement) $DBI::errstr";
    return $sth;
    }





    Quote Originariamente inviata da saintex Visualizza il messaggio
    ciao,
    mi mancano le chiamate alle funzioni,
    ma da quello che vedo, qui:

    codice:
    sub click_connect {
        $dbh->disconnect();
    ...
    }

    $dbh->disconnect();
    sta effettuando una disconessione a una connessione a db mai creata.
    Dovrebbe bastare commentarla:

    codice:
    #$dbh->disconnect();
    File allegati File allegati

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2023
    Messaggi
    2
    nel caso eliminassero l'allegato il file è qui

    https://mega.nz/file/bFcziCxa#HUi4RR...yCRQdagOKpLcEQ

  5. #5
    Il problema è che all'interno delle funzioni non ti vede il
    codice:
    my $dbh
    della linea 14.

    Non ho idea come sia strutturato l'applicativo, ma ipotizzando che si tratti di un package utilizzato da vari file:


    1. decommenta pure il commento che ti ho fatto mettere alla linea 23;
    2. prova a sostituire il
      codice:
      my $dbh
      della linea 14 con un
      codice:
      our $dbh
    3. in generale fino alla linea 20 (quindi nel codice non compreso all'interno delle funzioni) prova a sostituire il
      codice:
      my
      con
      codice:
      our
      Quindi:
      codice:
       our $path
      codice:
      our $file_ext

  6. #6
    risolto?



    Quote Originariamente inviata da saintex Visualizza il messaggio
    Il problema è che all'interno delle funzioni non ti vede il
    codice:
    my $dbh
    della linea 14.

    Non ho idea come sia strutturato l'applicativo, ma ipotizzando che si tratti di un package utilizzato da vari file:


    1. decommenta pure il commento che ti ho fatto mettere alla linea 23;
    2. prova a sostituire il
      codice:
      my $dbh
      della linea 14 con un
      codice:
      our $dbh
    3. in generale fino alla linea 20 (quindi nel codice non compreso all'interno delle funzioni) prova a sostituire il
      codice:
      my
      con
      codice:
      our
      Quindi:
      codice:
       our $path
      codice:
      our $file_ext

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.