Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3652[/thread]

Fehlermeldungen der Datenbank ausgeben: Fehlermeldungen der Datenbank ausgeben



<< >> 6 Einträge, 1 Seite
pug
 2006-01-17 20:19
#33911 #33911
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen, ich habe noch ein anderes Problem.
Und zwar möchte ich erfahren, ob die Datenbank keinen Datensatz gefunden hat. Also ich habe eine Webseite, in die man sich einloggen kann.

Code: (dl )
1
2
my $username     = $obj->param ( "username" );
my $passwort = $obj->param ( "passwort" );

Und in der Datenbank wird nachgeschaut, ob es solch eine User gibt:
Code: (dl )
1
2
3
4
5
6
$result = $dbh->prepare ( "SELECT pass FROM nickname WHERE nickname = '$username'" ) or die "Vorbereitung nicht durchfuehrbar!\n";

$result->execute() or die "Abfrage nicht ausfuehrbar!\n";

$zeile = $result->fetchrow_arrayref();
$vergleichs_passwort = $zeile->[0];

Wenn ich nun aber irgend einen nicht vorhandenen User eingebe, bekomme ich von der Datenbank keinen Mecker, sie gibt mir einfach nichts zurück.
Klar ich kann ja einfach über die Abfrage
Code: (dl )
if ( $vergleichs_passwort eq $passwort ) {....} 

dieses Problem erschlagen (was ich im Moment ja auch mache), aber ich würde es gerne mit den Statusmeldungen der Datenbank versuchen.

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
esskar
 2006-01-17 21:16
#33912 #33912
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
$result = $dbh->prepare ( "SELECT COUNT(*) FROM nickname WHERE nickname = '$username' and password ='$password'" ) or die "Vorbereitung nicht durchfuehrbar!\n";

$result->execute() or die "Abfrage nicht ausfuehrbar!\n";

$zeile = $result->fetchrow_arrayref();
if($zeile) {
print "gefunden";
} else {
print "nicht gefunden";
}


Das was su willst, geht nicht... die datenbank gibt dir datensätze zurück... sonst nichts

PS: Die's im CGI-env finde ich schlecht bis böse
pug
 2006-01-17 21:22
#33913 #33913
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Diese Errorcodes meinte ich:
http://www.physiol.ox.ac.uk/Computi....ix.html

Kann man an die überhaupt nicht ran? Ich meine über DBI?

Gruss Christian\n\n

<!--EDIT|pug|1137525880-->
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
Dubu
 2006-01-17 21:55
#33914 #33914
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=pug,17.01.2006, 19:19]
Code: (dl )
1
2
my $username     = $obj->param ( "username" );
my $passwort     = $obj->param ( "passwort" );

Und in der Datenbank wird nachgeschaut, ob es solch eine User gibt:
Code: (dl )
$result = $dbh->prepare ( "SELECT pass FROM nickname WHERE nickname = '$username'" ) or die "Vorbereitung nicht durchfuehrbar!\n";
[/quote]
Das schreit geradezu nach einem SQL-Injection-Angriff!
Niemals Benutzereingaben ohne Quoting oder Platzhalter in SQL-Befehlen verwenden!
renee
 2006-01-18 00:55
#33915 #33915
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
DBI liefert einen errorstring: ... or print $DBI::errstr;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2006-01-18 10:27
#33916 #33916
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Schau dir auch mal die DBI-Doku an. Stichworte RaiseError und PrintError.\n\n

<!--EDIT|nepos|1137572836-->
<< >> 6 Einträge, 1 Seite



View all threads created 2006-01-17 20:19.