mysql abfrage einer spezif. spalte
malte
- perl
-1 Struppi0 malte0 Jörg Peschke0 malte
0 Struppi
hallo,
bin noch immer auf der suche nach einer optimalen funktion. ich möchte via perl eine mysql db auslesen - jedoch nur eine bestimmte spalte.
allerdings:
guter tipp war schon:
$hash_ref = $dbh->selectrow_hashref("SELECT * FROM table WHERE );
$date = $hash_ref->{"date"};
Für date wird nun aber immer der höchste wert ausgegben. wie oder mit welcher funktion kann ich alle werte "date" in einem array speichern?
vielen dank,
malte
Für date wird nun aber immer der höchste wert ausgegben. wie oder mit welcher funktion kann ich alle werte "date" in einem array speichern?
Du möchtest die Dokumentation zum DBI Modul und evtl. auch mySQL lesen.
Struppi.
Du möchtest die Dokumentation zum DBI Modul und evtl. auch mySQL lesen.
das habe ich schon ca 362784328mal getan... aber ich finde da nix auf cpan - und inwiefern meine frage jetzt was mit der mysql-doku zu tun hat, wäre ich gespannt.
danke ;-)
Hallo Malte,
das habe ich schon ca 362784328mal getan... aber ich finde da nix auf cpan - und inwiefern meine frage jetzt was mit der mysql-doku zu tun hat, wäre ich gespannt.
Das von Dir beschriebene Verhalten von "selectrow_hashref" ist bei CPAN fürs DBI-Modul genauso dokumentiert:
"[...]This utility method combines "prepare", "execute" and "fetchrow_hashref" into a single call. It returns the FIRST ROW of data from the statement.[...]
Es ist also nicht verwunderlich, dass Du nur eine Zeile wiederbekommst.
Versuch mal folgendes:
my $sth = $dbh->prepare ("SELECT * FROM tabelle usw.");
$sth->execute or die "Cannot Do select"
while ($hash_ref = $sth->fetchrow_hashref) {
$date = $hash_ref->{'date'};
...
...
}
(ohne Gewähr)
Dieses Konzept ist bei allen MySQL-APIs (ob Perl/PHP oder was auch immer) im Endeffekt gleich
(1. Datenbankverbindung aufbauen, 2. Select-Statement absetzen, 3. so lange Tabellenzeilen vom Ergebnis-Vektor nachholen (das macht fetchrow_hashref), bis keine mehr kommt), daher auch Struppis Verweis auf die MySQL-Doku :)
Viele Grüße,
Jörg
Hallo Jörg - herzlichen Dank für deine Hilfe - funktioniert auf Anhieb genauso, wie ich es mir vorgestellt hatte...
Ich weiss auch nicht, weshalb ich das nicht vorher gefunden habe... :(.
Also, danke für den konstruktiven Vorschlag von dir!
Grüße,
Malte
Du möchtest die Dokumentation zum DBI Modul und evtl. auch mySQL lesen.
das habe ich schon ca 362784328mal getan... aber ich finde da nix auf cpan - und inwiefern meine frage jetzt was mit der mysql-doku zu tun hat, wäre ich gespannt.
wennn du das Modul bei dir lokal installiert hast, ist die Doku auf deiner Festplatte (Je nach Betriebsystem und wie du Perl installiert hast).
Mit mySQL hat das insoweit zu tun, dass du natrülich Wissen musst was passiert, wenn du eine Abfrage absetzt. Dein select Befehl gibt dir bereits alle Datensätze zurück die du willst, du fragt aber nur einen in deiner Anwendung ab.
Darüber hinaus solltest du (falls du Internet CGI Anwendungen entwickeln möchtest) dich auf jeden Fall mit allen Aspekten von CGI (z.b. Perl) <-> mySQL auseinandersetzen, da du dich evtl. in Teufels Küche begibst. Je nachdem wie wichtig dir deine Daten und dein Server ist.
Denn, sowohl was Laufzeit und Datenmenge angeht als auch was die Sicherheit betrifft, ist das Thema sehr komplex.
Struppi.