Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3737[/thread]

Problem mit IF



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Tom
 2006-11-07 20:06
#34870 #34870
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
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);


So sollte es funktionieren.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
nepos
 2006-11-07 22:53
#34871 #34871
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wie sieht dein String fuer den Connect denn genau aus?
betterworld
 2006-11-08 01:14
#34872 #34872
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Ich verschiebe das mal von CGI zu Datenbanken.
Gast Gast
 2006-11-07 19:49
#34873 #34873
Hi,

ich versuche folgendes:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
    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:

Quote
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 :(
Hoffe, mir kann jemand helfen.
nepos
 2006-11-07 22:52
#34874 #34874
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Und nimm benutz Platzhalter fuer deine SQL-Anweisungen. Vermeidet viele Fehler und schuetzt vor SQL-Injection.
Gast Gast
 2006-11-07 21:45
#34875 #34875
Hey, danke dir. Hat wunderbar geklappt. Jetzt habe ich aber ein anderes Problem...

1. Ich kann mich hier im Board nicht reggen:

Quote
Ein Fehler ist aufgetreten. Es konnten nicht alle Daten gesendet werden. Bitte versuch es erneut.

Du bist nicht eingeloggt


2. Ich baue eine Datenbank Verbindung auf und nutze folgenden Wert:

Code: (dl )
my $db_pass = "$main->{settings}{sqlpass}";


Im Script heißt es dann aber:

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


Wenn ich aber folgendes benutze:

Code: (dl )
my $db_pass = "12345";


Dann gehts ohne Probleme. Wodran liegt das? Die Datenbank und den Host usw. lese ich genauso aus?!?
ptk
 2006-11-08 09:19
#34876 #34876
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Steht in $main->{settings}{sqlpass} tatsächlich das richtige Passwort?
renee
 2006-11-08 10:04
#34877 #34877
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau Dir das $main doch mal mit CPAN:Data::Dumper an. Sicher, dass das Passwort in $main->{settings}{sqlpass} und nicht vielleicht in ...{sqlpasswd} steht?

Warum machst Du eigentlich die "" bei der Zuweisung? Es geht zwar, ist aber eher unschön. Ich würde da eher my $pass = $main->{settings}{passwd} verwenden.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2006-11-08 07:51
#34878 #34878
Da ich mich leider immernoch nicht registrieren kann, muss ich wieder nen neues Thema erstellen. Bitte vergebt mir :D

@nepos

Der gesamte String zum connect sieht so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
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";


Funktionieren tut es leider nur so:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
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";


Verstehen muss ich das ja nicht, oder?
nepos
 2006-11-08 09:56
#34879 #34879
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Die Fehlermeldung deutet eher darauf hin, dass gar kein Passwort uebergeben wurde. Klappt es denn mit dem Kommandozeilentool mysql wenn du die in Perl benutzten Werte benutzt?
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-11-07 20:06.