Thread MySQL + Transaktion -> funktioniert nicht
(30 answers)
Opened by SirLant at 2003-08-25 16:00
[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); } } 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--> |