Thread MySQL + Transaktion -> funktioniert nicht (30 answers)
Opened by SirLant at 2003-08-25 16:00

SirLant
 2003-08-25 16:00
#31872 #31872
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Nachdem ich nun meine Tabellen als BDB Tabellen habe, funktioniert meine Transaktion weiterhin nicht.
Hier mal der code, vllt. findet wer von euch den Fehler, es wird immer "Ein Problem mit der Datenbank ist aufgetreten.Bitte versuchen sie es noch einmal."

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
$dbh->{AutoCommit}= 0;  #Für Transaktion

        eval {  bestellung_speichern ($dbh, $bestell_info) and $dbh->commit (); };

        if ($@) { #hat nicht Funktioniert
        
                $dbh->rollback ();
                $dbh->disconnect ();
                $peh->schwerer_fehler ("Ein Problem mit der Datenbank ist aufgetreten.Bitte versuchen sie es noch einmal.");
                
        }
        $dbh->{AutoCommit} = 1; #Transaktion abgeschlossen


Die Funktion bestellung_speichern:
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
36
37
38
39
sub bestellung_speichern {

        my ($dbh, $bestell_info) = @_;
        #Datensatz in doku_bestell
        
        $dbh->do ("INSERT INTO doku_bestell (bestell_datum, bestell_preis, aut_id, kunden_name,
                        kunden_email) VALUES (CURRENT_DATE,?,?,?,?)", undef,
                        $bestell_info->{gesamtpreis},
                        $bestell_info->{aut_id},
                        $bestell_info->{kunden_name},
                        $bestell_info->{kunden_email}
                        );
        #Bestell_id ist der Auto_Increment wert von eben
        $bestell_info->{bestell_id} = $dbh->{mysql_insertid};
        #für jedes Dokument einen Datensatz in doku_posten
        
        for (@{$bestell_info->{posten}}) {
        
        #Passwort für das Dokument erzeugen und speichern 
                my $passwort = passwort ();
                my $a;
        #Erzeugt die Links zu den Dokumenten
                $a = sprintf ("dokument.cgi?bestellung=%s;doku=%s;password=%s",
                                   escape ($bestell_info->{bestell_id}),
                                   escape ($_->{doku_id}),
                                   escape ($passwort)
                                );
                $_->{url} = $peh->haupt_url () . $a;
                $dbh->do ("INSERT INTO doku_posten (bestell_id, doku_id, preis, passwort)
                                VALUES (?,?,?,?)",undef,
                                $bestell_info->{bestell_id},
                                $_->{doku_id},
                                $_->{preis},
                                $passwort
                                );
        
        }
        
}
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!

View full thread MySQL + Transaktion -> funktioniert nicht