In dbutils.pm Datei vorbereiten rufen wirkann nicht Methode auf einen nicht definierten Wert perl
my $sth = $dbh->prepare($checkUser) or return ($::FALSE,"checkUser prepare failed ");
in dieser Erklärung verwenden Fehler immer wie können Verfahren auf einen nicht definierten Wert gleiche Aussage nicht nennen bereiten mit in dieser Datei für viele Male, aber ich habe keinen Fehler wie folgt erhalten. prepare ($ checkUser) -> checkUser ist eine SQL-Abfrage und gibt etwas zurück. Es gibt kein Problem mit der Abfrage seiner Rückgabewerte.
Wir verwenden sub dbLogin { }
Funktion. In dieser Funktion haben wir gegeben:
$dbh = DBI->connect('DBI:Oracle:DBname', 'username', 'pwd')
or die "Couldn't connect to database: " . DBI->errstr;
Und diese Funktion $dbh
um pro Ihren Vorschlag zurückkehrt schon wir, dass $dbh
Code der Leitung.
Was auch immer die $ dbh zurückgibt, dass wir in vielen Fällen & Orte in dbUtil.pm Datei verwenden.
Bitte schlagen Sie mir vor, dieses Problem zu beheben.
Keiner der Details, die Sie hinzugefügt haben, hat die Situation überhaupt verändert.Das Problem ist, dass '$ dbh' nicht definiert ist, wenn Sie' prepare() 'aufrufen. Sie müssen herausfinden, warum es an diesem Punkt in Ihrem Programm nicht gesetzt ist. –
Wir rufen sub dbLogin() -Funktion für jedes Mal beim Aufruf prepare() wie mein $ dbh = & dbLogin; my $ sth = $ dbh-> Vorbereitung ($ checkUser) oder return ($ :: FALSE, "checkUser Vorbereitung fehlgeschlagen") ;. –
Dann gibt 'dbLogin() 'aus irgendeinem Grund einen undefinierten Wert zurück. Sie müssen herausfinden, warum das so ist. Und rufen Sie Subroutinen nicht mit '&' auf. Es ist möglicherweise verwirrend und wurde seit über zwanzig Jahren nicht mehr benötigt. –