Thread Perl DBI DBD::MySQL Abfrage Problem (19 answers)
Opened by gmafx at 2009-11-19 16:49

pktm
 2009-11-19 23:59
#128347 #128347
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hi!

Hier die Standard-Dinge:
* Hast du strict und warnings an?
* Werte alle möglichen Fehlerquellen aus (z.B. auch die beim connect).
* Du benutzt bind, hast aber keine Platzhalter definiert. edit: das (mein Kommentar) ist Unsinn.

Hier mal eine Überarbeitung (ungetestet), probier die mal aus. Da werden mehr Fehler abgefangen und außerdem wird Quoting verwendet, d.h. der Wert, den du in der WHERE-Klausel prüfst, kann keine unsicheren Zeichen / Befehle enthalten.

Code: (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
#!/usr/bin/perl

use strict;
use warnings;
use DBI;
use Data::Dumper qw/Dumper/;

my $database = "dbname";
my $host = "localhost";
my $user = "username";
my $pw = "pw";
my $searchstring = "ein in Spalte 1 vorkommender Wert"; # hier muss ein ; hin

my $dsn = "dbi:mysql:$database:localhost:3306";

# was ist mit den Attributen?
my $dbh = DBI->connect($dsn, $user, $pw) or die("err connect: " . DBI->errstr());

my $sql = 'select * from dbname where value1 = ?';
my $sth = $dbh->prepare($query) or die("err prep: " . DBI->errstr());

# hier werden die Werte eingefügt, die für die Platzhalter eingefügt werden sollen.
# du hast 1 Platzhalter, also übergibst du 1 Wert.
my $rv = $dbh->execute($searchstring) or die("err exec: " . DBI->errstr());

# rv kann man auswerten, muss man aber nicht (wird nicht von allen Datenbanken unterstützt).

while( my $arrayref = $sth->fetchrow_arrayref() ) {

# du machst ein print OUTPUT, aber was ist OUTPUT? Ein Datei-Handle?
# die Konsole ist glaube ich STDOUT
print Dumper $arrayref; # Data::Dumper ist cool!

}


Selbstverständlich sind die Fehlermeldungen nur Andeutungen. Ausformulieren musst du die schon selbst :)
Last edited: 2009-11-20 12:13:27 +0100 (CET)
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Perl DBI DBD::MySQL Abfrage Problem