Thread MySQL: Spaltennamen auslesen? (9 answers)
Opened by pixelflat at 2007-09-17 17:34

sid burn
 2007-09-17 18:41
#99571 #99571
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Schau mal unter perldoc DBI unter "Statement Handle Attributes". Dort hat ein Statement das Attribut "NAMES" was eine Arrayref auf die Spaltennamen zurück gibt, so wie du es abgefragt hast. Übrigens sollte man deswegen auch kein "SELECT *" benutzen sondern gleich alle Parameter angeben im SQL. Macht weniger Probleme.


Code: (dl )
1
2
3
4
5
6
7
8
9
mysql> select * from faq;
+----+-------+----------------------------------------+-------------------------------------------------------------+-------------------+----------------+
| id | title | question | answer | show_themenordner | feeds_ratgeber |
+----+-------+----------------------------------------+-------------------------------------------------------------+-------------------+----------------+
| 1 | | Welche Frameworks gibt es? | CGI::Application, Catalyst, Jiffty | 1 | 0 |
| 2 | | Wie verbindet man sich zu Datenbanken? | Mit dem DBI Modul! | 1 | 0 |
| 3 | | Welche Sigils gibt es? | Für Skalare ein $. Für Arrays ein @ und für Hashes ein % | 1 | 0 |
+----+-------+----------------------------------------+-------------------------------------------------------------+-------------------+----------------+
3 rows in set (0.00 sec)


dbi_name.pl
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
#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my $db_user    = 'root';
my $db_passwd  = '';
my $db_options = { RaiseError => 1, AutoCommit => 1 };

my $dbh = DBI->connect('dbi:mysql:database=faq', $db_user, $db_passwd, $db_options)
    or  die DBI::errstr;

my $sth = $dbh->prepare( 'SELECT * FROM faq' );
$sth->execute();

my $num_of_fields = $sth->{NUM_OF_FIELDS} - 1;
my $names         = $sth->{NAME};

while ( my $row = $sth->fetchrow_arrayref ) {
    for my $i ( 0 .. $num_of_fields ) {
        print $names->[$i], ' => ', $row->[$i], "\n";
    }
    print "\n";
}

$dbh->disconnect;


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sidburn@sid:~/perl$ ./dbi_name.pl
id => 1
title =>
question => Welche Frameworks gibt es?
answer => CGI::Application, Catalyst, Jiffty
show_themenordner => 1
feeds_ratgeber => 0

id => 2
title =>
question => Wie verbindet man sich zu Datenbanken?
answer => Mit dem DBI Modul!
show_themenordner => 1
feeds_ratgeber => 0

id => 3
title =>
question => Welche Sigils gibt es?
answer => Für Skalare ein $. Für Arrays ein @ und für Hashes ein %
show_themenordner => 1
feeds_ratgeber => 0
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread MySQL: Spaltennamen auslesen?