Schrift
[thread]3317[/thread]

MySQL + Transaktion -> funktioniert nicht (Seite 3)



<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten
Shagreen
 2003-08-26 01:13
#31892 #31892
User since
2003-08-14
88 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,25.08.2003, 23:00]Das heißt, mein Skript läuft im mom nur, weil ich oben vergessen habe die Abfrage zu negieren, aber es muss etwas zurückliefern, die werte stimmen doch.
Habe es in mysql getestet und es scheint an dem "id" in doku_id zu liegen, mit Backticks geht es, mal im skript testen.

Edit:
Im Skript selbst geht es nicht.[/quote]
Ich würde auf undef abfragen. doku_id darf ja kein NULL-Wert sein, also gibt es keine Mehrdeutigkeit in dieser Hinsicht.
SirLant
 2003-08-26 01:27
#31893 #31893
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
if (!defined ($doku_result || $doku_result eq "")){

$peh->schwerer_fehler ("Dokument/Passwort stimmt nicht");

}

Das geht, es gibt gar kein undef zurück sondern ""


Vielen Dank für deine Hilfe\n\n

<!--EDIT|SirLant|1061846852-->
--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!
Shagreen
 2003-08-26 01:34
#31894 #31894
User since
2003-08-14
88 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,25.08.2003, 23:27]if (!defined ($doku_result || $doku_result eq "")){

$peh->schwerer_fehler ("Dokument/Passwort stimmt nicht");

}

Das geht, es gibt gar kein undef zurück sondern ""


Vielen Dank für deine Hilfe[/quote]
Also, das sieht komisch aus, "" sollte eigentlich auch nicht zurückgegeben werden. Ich würde mal folgendes probieren:
Code (perl): (dl )
1
2
3
unless (defined $doku_result) {
...
}
SirLant
 2003-08-26 01:39
#31895 #31895
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
unless defined tut das gleiche wie if !defined und das geht eben nicht, nur die Prüfung auf "" geht, laut Doku müsste ja undef oder die erste Spalte zurückgegeben werden, im skalaren Kontext
--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!
Shagreen
 2003-08-26 01:49
#31896 #31896
User since
2003-08-14
88 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,25.08.2003, 23:39]unless defined tut das gleiche wie if !defined  und das geht eben nicht, nur die Prüfung auf "" geht, laut Doku müsste ja undef oder die erste Spalte zurückgegeben werden, im skalaren Kontext[/quote]
Dann aber so:
Code (perl): (dl )
1
2
3
if (!defined $doku_result or $doku_result eq "") {
...
}

Woher kommt das "? In doku_id muß doch eine Zahl stehen.
SirLant
 2003-08-26 01:51
#31897 #31897
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Ich meinte mit "", ne leere Liste bzw. nen leeren String
--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!
Shagreen
 2003-08-26 01:59
#31898 #31898
User since
2003-08-14
88 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,25.08.2003, 23:51]Ich meinte mit "", ne leere Liste bzw. nen leeren String[/quote]
Ein Leerstring kann gar nicht vorkommen. Die Query verreckt irgendwo mit undef. Ich würde die erweiterte Methode (prepare/execute/fetch) benutzen, mit Fehlerbehandlung natürlich.
SirLant
 2003-08-26 02:02
#31899 #31899
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Hm, versuche ich mal.


Edit:

habe es so:
Code (perl): (dl )
1
2
3
4
my $sth = $dbh->prepare ("SELECT doku_id FROM doku_posten WHERE `bestell_id` = ? AND "
                                . "`doku_id` = ? AND `passwort` = ?");
$sth = $dbh->execute ($bestell_id, $doku_id, $pwd);
my $doku_result = $sth->selectrow_array ();


Der interpreter bringt:
Can't locate object method "execute" via package "DBI::db" at E:/WWW/cgi-bin/pseudecom/dokument.cgi line 29.


wo liegt da das Problem?\n\n

<!--EDIT|SirLant|1061849217-->
--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!
Shagreen
 2003-08-26 02:08
#31900 #31900
User since
2003-08-14
88 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich hoffe, Dein Code sieht nicht so ähnlich aus:
Code (perl): (dl )
1
2
3
my $doku_result = $dbh->selectrow_array ("SELECT doku_id FROM doku_posten WHERE bestell_id = ? AND "
. "doku_id = ? AND passwort = ?", undef, $bestell_id, $doku_id, $pwd)
or $dbh->errstr();

Das könnte einen Leerstring zur Folge haben, wenn die Abfrage undef (0 Rows) liefert und kein Fehler aufgetreten ist.\n\n

<!--EDIT|Shagreen|1061849334-->
Shagreen
 2003-08-26 02:11
#31901 #31901
User since
2003-08-14
88 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,26.08.2003, 00:02]Hm, versuche ich mal.


Edit:

habe es so:
Code (perl): (dl )
1
2
3
4
my $sth = $dbh->prepare ("SELECT doku_id FROM doku_posten WHERE `bestell_id` = ? AND "
                                . "`doku_id` = ? AND `passwort` = ?");
$sth->execute ($bestell_id, $doku_id, $pwd);
my $doku_result = $sth->selectrow_array ();


Der interpreter bringt:
Can't locate object method "execute" via package "DBI::db" at E:/WWW/cgi-bin/pseudecom/dokument.cgi line 29.


wo liegt da das Problem?[/quote]
1. $sth->execute()
2. Fehlerbehandlung
3. Doku zum DBI-Modul
<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten



View all threads created 2003-08-25 16:00.