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

Shagreen
 2003-08-25 17:37
#31877 #31877
User since
2003-08-14
88 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,25.08.2003, 14:00]...
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
40
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}
                        ) or $peh->schwerer_fehler ("INSERT #1: " . $dbh->errstr);
;
        #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
                                ) or $peh->schwerer_fehler ("INSERT #2: " . $dbh->errstr);
        
        }
        
}
[/quote]
siehe Codeerweiterung bei den INSERTs.
Außerhalb der Sub kannst Du dann abfragen, ob $peh->schwerer_fehler eine Meldung enthält.
bestell_id kannst Du noch in der Tabelle doku_bestell auf unsigned setzen.
Soweit erstmal.

Edit:
Das Leerzeichen im Datumsformat ist doch bestimmt ein Darstellungsfehler?!
bestell_datum date NOT NULL default '0000-00 -00',\n\n

<!--EDIT|Shagreen|1061818911-->

View full thread MySQL + Transaktion -> funktioniert nicht