Leser: 29
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
41
42
43
44
45
46
47
48
49
50
51
52
#!/Perl/bin/perl
use strict;
use warnings;
use DBI;
my $user = "test";
my $password = "test";
print "--- ANFANG ---\n";
# DSN legt den Treiber, Name der DB, Host und Port fest
my $dsn = "dbi:mysql:database=jgeier;host=localhost;port=33066";
# Der eigentliche Connect mit Benutzer und Passwort
my $dbh = DBI->connect($dsn, $user, $password)
or die "Error connecting to MySQL server: " . DBI->errstr();
print "[A]\n";
print $dbh."\n";
# Beispiel fuer SELECT
# Die '?' sind Platzhalter, für die 1 und 2 eingesetzt werden
# Sollte man benutzen, um SQL-Injection durch fehlendes Escaping vorzubeugen
# my $rows = $dbh->selectrow_arrayref("SELECT * FROM TABLE jgeier.test", 1, 2);
my $rows = $dbh->selectrow_arrayref("SELECT * FROM jgeier.test");
print "[B]\n";
print $rows."\n";
#
## Über die Ergebniszeilen des SELECTs iterieren...
#
print "[C]\n";
foreach my $row (@$rows) {
print $row."\n";
}
# Datenbankverbindung abbauen
$dbh->disconnect();
print "--- ENDE ---\n";
exit;
2009-05-24T08:36:58 jgeierich bin noch etwas neu im umgang mit PERL und dem Zugriff auf meine MySQL Datenbank.
2009-05-24T08:36:58 jgeierJedoch möchte ich auch auf weitere Zeilen der Ergebnistabelle zugreifen und gezielt auf bestimmte spalten der Errgebnistabelle.
1
2
3
4
5
6
7
8
use Data::Dumper;
my $sth = $dbh->prepare("SELECT * FROM jgeier.test") or die $dbh->errstr;
$sth->execute() or die $sth->errstr;
while (my $row = $sth->fetchrow_hashref) {
print Dumper($row);
}
1 2 3 4 5 6 7 8
foreach my $row (@$rows) { foreach my $val (@$row) { print "$val\n"; } }
2009-05-24T08:36:58 jgeierCode: (dl )1
2
3
4
5
6
7
8
9my $dsn = "dbi:mysql:database=jgeier;host=localhost;port=33066";
print $dbh."\n";
print $rows."\n";
foreach my $row (@$rows) {
print $row."\n";
}
2009-05-25T09:04:49 jgeierUm zu sehen welcher Inhalt diese Variablen hat. Ist übrigens sehr interessant .... =:-)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#... my $sth = $dbh->prepare("SELECT * FROM jgeier.test") or die $dbh->errstr; $sth->execute() or die $sth->errstr; print "[B]\n"; # ## Über die Ergebniszeilen des SELECTs iterieren... # while ( my @row = $sth->fetchrow_array() ) { print join( " : " , @row ) , "\n"; } #...
1 2 3 4 5
print "NameDerSpalte:\n"; foreach my $zeile ($dbh->selectall_array("SELECT NameDerSpalte FROM jgeier.test");) { print $zeile."\n"; }
1
2
3
4
5
6
7
8
my $rows = $dbh->selectall_arrayref("SELECT rowa,rowb FROM jgeier.test");
foreach my $row (@$rows) {
print "ROWA:".$$row[0]."\n";
print "ROWB:".$$row[1]."\n";
print "--- --- --- --- ---\n";
}
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
#!/usr/bin/perl use strict; use warnings; use DBI; use Data::Dumper; # beispielskript; bitte Fehlerbehandlung selbst einfuegen! my $dbh = DBI->connect("dbi:SQLite:dbname=test.db","",""); my $stmt = 'SELECT * FROM testa'; my $sth = $dbh->prepare( $stmt ); $sth->execute; while ( my $ref = $sth->fetchrow_hashref() ) { print Dumper $ref; } __END__ Testtabelle erstellt mit SQLite3 und folgendem SQL: CREATE TABLE testa ( NAME TEXT, WHAT TEXT ); INSERT INTO testa VALUES( 'foo', 'bar' ); INSERT INTO testa VALUES( 'ggg', 'lol' );
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
#!/Perl/bin/perl
use strict;
use warnings;
use DBI;
use Data::Dumper;
my $user = "test";
my $password = "test";
print "--- ANFANG ---\n";
my $dsn = "dbi:mysql:database=jgeier;host=localhost;port=33066";
my $dbh = DBI->connect($dsn, $user, $password)
or die "Error connecting to MySQL server: " . DBI->errstr();
my $rows = $dbh->selectall_hashref("SELECT * FROM jgeier.test ORDER BY sid ASC","sid");
#
## Hash Einzeln Ausgeben
#
foreach my $key (sort keys %$rows) {
print "Key:".$key."\n";
print "SID:".$$rows{$key}{sid}."\n";
print "\n--- --- ---\n";
}
$dbh->disconnect();
print "--- ENDE ---\n";
exit;