Thread Optimieren (21 answers)
Opened by kabel at 2003-08-20 12:05

Strat
 2003-08-22 15:25
#1007 #1007
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=stb2050,22.08.2003, 12:57]Wenn hier ein Benutzer einen "$user" angibt, von dem es in der Tabelle hpm_user keine Zeile gibt, also der nicht existiert, dann bekomme ich folgende Fehlermeldung:[/quote]
Schreibe mal das Script folgendermaszen um:

Am anfang vom Script eine Datenbankverbindung erstellen:
Code (perl): (dl )
1
2
3
4
5
6
use DBI;
my &#36dbh = DBI->connect(&#36dsn); # hier eintragen, was du fuer connect-parameter hast
unless (&#36dbh) { # fehlerabfrage
  print "Fehler: konnte nicht zur Datenbank verbinden: &#36DBI::err_str\n";
  exit 0;
}

und dein Codebeispiel ersetzt du durch folgendes:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# was passiert, wenn &#36user folgendermaszen aussieht:
# a' OR id > 1 OR username = 'b
# dann koennte der benutzer an mehr daten kommen als er eigentlich 
# sehen darf. deshalb:
&#36user = &#36dbh->quote(&#36user); 
 
my &#36anfrage = qq~SELECT passwort, userid FROM htm_user WHERE username = &#36user~;
 
my &#36sth = &FireSql(&#36dbh, &#36anfrage);
 
if (my &#36ergebnis = &#36sth->fetchrow_hashref()) {
  (&#36pass2, &#36userid} = @{ &#36ergebnis }{'password', 'userid'};
}
else {
  # fehlermeldung
} 
&#36sth->finish(); # aufraeumen

# ------------------------------------------
sub FireSql {
  my (&#36dbh, &#36statement) = @_;
 
  my &#36sth = &#36dbh->prepare(&#36statement);
  unless (&#36sth) {
    print "Fehler im prepare: '&#36statement': ", &#36dbh->err_str, "\n";
    exit 0;
  }

  unless (&#36sth->execute()) {
    print "Fehler im prepare: '&#36statement': ", &#36dbh->err_str, "\n";
    exit 0;
  }

  return (&#36sth);
} # FireSql


Habe den Code nicht getestet, also ist wahrscheinlich ein Vertipper drinnen...\n\n

<!--EDIT|Strat|1061551687-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Optimieren