User since
2008-07-21
8
Artikel
BenutzerIn
Ich habe ein Script das einen Update Befehl ausführt, es läuft durch und schmeißt auch keinen Fehler ändert aber keine Werte.
Script:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
use strict;
use DBI;
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
my $db ="F:/Eigene Dateien/Eigene Datenquellen/gasverbrauch.fdb";
my $input = new CGI;
my $knd_id = $input->param("knd_id");
my $status_temp = $input->param("status_temp");
my $Monat = $input->param("Monat");
my $Jahr = $input->param("Jahr");
my $dbh = connect_db($db);
my $q = "UPDATE VERBRAUCH SET TEMP_STATUS = '$status_temp'
WHERE (KUNDE_ID = $knd_id AND MONAT = $Monat AND JAHR = $Monat);";
do_query($q,$dbh);
disconnect_db($dbh);
sub connect_db {
my $db = $_[0];
my $SQL_Driver = "InterBase";
my $SQL_Host="localhost";
my $SQL_User="SYSDBA";
my $SQL_Passw="masterkey";
my $dbh = DBI->connect("DBI:$SQL_Driver:$db", $SQL_User, $SQL_Passw, \%err_attr)or mess_out("Kann keine Verbindung zum MySQL-Server aufbauen");
return $dbh;
}
sub disconnect_db {
my $dbh = $_[0];
$dbh->disconnect;
return 1;
}
sub do_query {
my $query = $_[0];
my $dbh = $_[1];
my $res = $dbh->do($query)or mess_out("Kann Abfrage nicht ausfuehren");
return $res;
}
sub mess_out {
my $mess = $_[0];
die "$mess\nError $DBI::err ($DBI::errstr)\n";
}
User since
2005-08-17
1420
Artikel
BenutzerIn
Kann es sein, dass du hier noch die Transaktion comitten musst?
User since
2003-08-04
12209
Artikel
Admin1
Lexy+2008-08-06 12:47:42--
my $knd_id = $input->param("knd_id");
my $status_temp = $input->param("status_temp");
my $Monat = $input->param("Monat");
my $Jahr = $input->param("Jahr");
my $q = "UPDATE VERBRAUCH SET TEMP_STATUS = '$status_temp'
WHERE (KUNDE_ID = $knd_id AND MONAT = $Monat AND JAHR = $Monat);";
hilfe!
da kann ich ja deine datenbank kaputtmachen, wenn ich nur die richtigen werte im browser
eingebe!
hast du schonmal daran gedacht, dass man in monat statt "01" einfach "0 or is not null"
eingeben kann?
bitte unbedingt
DbiPlatzhalter lesen.
User since
2008-07-21
8
Artikel
BenutzerIn
Jup danke für den Tipp mit den Platzhaltern :-)
ja hatte ich schon dran gedacht und hab im Formular wo die daten eingegeben werden net select box gemacht damit ich nur die werte bekomme die ich auch haben will.
Hab jetzt aber auch auf die Platzhalter umgestellt und jetzt funktioniert auch das Update.
Nochmals vielen Dank @ pq
User since
2003-08-04
12209
Artikel
Admin1
Lexy+2008-08-06 16:27:15--ja hatte ich schon dran gedacht und hab im Formular wo die daten eingegeben werden net select
nur dass dir das nix bringt, denn sowas lässt sich leicht umgehen. aber wenn du ja jetzt platzhalter
benutzt, ist ja gut =)