SEO-Software von Suchmaschinenoptimierung.de

Großes Perl Problem

(hier klicken, um zum Original Thread zu gelangen)
TrioxX
Hi,

ich versuche folgendes:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
	my $x = $main->{settings}{x};

		if($x == 1)
		{
		my $sql = qq{select * from $main->{settings}{wbbnr}_sessions where hash = '$sid'};
		}
		if($x == 2)
		{
		my $sql = qq{select * from $main->{settings}{wbbnr}_sessions where sessionhash = '$sid'};
		}

		my $sth = $dbh->prepare($sql);


Das Problem:

Die Variable $sql bleibt innerhalb der If-Abfrage stecken und wird nicht mehr in $sth übergeben:

Zitat:
Perl error message:
Global symbol "$sql" requires explicit package name at ./Plugins/ExternalLink.pm line 140.


Woran liegt das? Ich habe keine Ahnung, wo das Problem liegt unglücklich
Hoffe, mir kann jemand helfen.
marIus
dumme frage ich weiß

die rechte sind richtig gesetzt?

wie lautet denn das komplette script.

haben die variablen bzw funktionen auch irgendwelche rückgabewerte?
TrioxX
Danke für deine Mühe, ich war jedoch schneller smile

Zitat:
my $x = $main->{settings}{x};
my $sql;

if($x == 1)
{
$sql = qq{select * from $main->{settings}{wbbnr}_sessions where hash = '$sid'};
}
if($x == 2)
{
$sql = qq{select * from $main->{settings}{wbbnr}_sessions where sessionhash = '$sid'};
}

my $sth = $dbh->prepare($sql);


Dafür hab ich nun ein anderes Problem...

Ich baue eine Datenbank Verbindung auf und nutze folgendes dazu:

Zitat:
my $db_name = "$main->{settings}{sqldb}";
my $db_user = "$main->{settings}{sqluser}";
my $db_pass = "$main->{settings}{sqlpass}";
my $db_host = "$main->{settings}{sqlhost}";
my $db_port = "$main->{settings}{sqlport}";
my $db_connect = "DBI:mysql:$db_name:$db_host:$db_port";
my @ergebnis;
my $id;

my $dbh = DBI->connect($db_connect, $db_user, $db_pass) || die "Verbindung kann nicht hergestellt werden: $DBI::errstr";


Beim Aufruf erhalte ich aber leider:

Zitat:
Fatal error occured: Verbindung kann nicht hergestellt werden: Access denied for user: 'web1@localhost' (Using password: NO) at ./Plugins/ExternalLink.pm


Wenn ich jetzt aber (das Problem scheint ja das Passwort zu sein...) folgendes nutze:

Zitat:
my $db_name = "$main->{settings}{sqldb}";
my $db_user = "$main->{settings}{sqluser}";
my $db_pass = "12345";
my $db_host = "$main->{settings}{sqlhost}";
my $db_port = "$main->{settings}{sqlport}";
my $db_connect = "DBI:mysql:$db_name:$db_host:$db_port";
my @ergebnis;
my $id;

my $dbh = DBI->connect($db_connect, $db_user, $db_pass) || die "Verbindung kann nicht hergestellt werden: $DBI::errstr";


Dann geht es. Verstehe ich nicht ganz denn $main->{settings}{xxx} ist überall gleich definiert, d.h. es gibt keine Formatierungsunterschiede, außer beim Port. Wie man sieht, erreicht das Script ja auch den Server+Port => Die DB

Aber bei der Authentifizierung mittels des PW gibts Probleme. Aus der obigen Fehlermeldung lese ich, dass das Passwort überhaupt nicht wahrgenommen wird, obwohl es wie alle anderen Daten in Klartext hinterlegt ist.
(hier klicken, um zum Original Thread zu gelangen)



Tipp: Ranking-Konzept.de - Das SEO-Forum (Forum rund um die Suchmaschinenoptimierung) der artaxo AG.
Das große Versicherungs ABC von Versicherung.de - mit allen Aspekten der Computerversicherungen!
Fan-Foren.de, die große Community mit Musikforum ist ab sofort online.