DB-Abfrage

Gesperrt
netronaut
Beiträge: 12
Registriert: Sa 17. Jan 2004, 01:41
Kontaktdaten:

DB-Abfrage

Beitrag von netronaut » Fr 7. Jan 2005, 16:39

Hallo,

wenn man eine DB-Abfrage mit den Contenido-Klassen ausführt, sieht das ja wie folgt aus:

$query = "SELECT * FROM table WHERE ...";
$db->query($query);
while ($db->nextRecord()) {

...

}

In der while-Schleife kann man mit $db->f('feldname') den Wert der Datenbankspalte mit der Bezeichnung "feldname" bekommen.

Wie sieht es aber aus, wenn man in einer Schleife alle Spalten durchgehen möchte, um dann die Werte zu verwerten? Bei einer "normalen" SQL-Abfrage würde ich eine Schleife wie diese hier

while ($row = mysql_fetch_array($result)){
foreach ($row as $key => $val) {

}
}

verwenden.

Gibt es in den Contenido-Klassen auch eine Funktion, um den aktuellen Datensatz als Assoziatives Array zu erhalten, um dann eine foreach-Schleife wie oben darauf anzusetzen? Leider habe ich bisher keine solche Funktion in der DB-Klasse gefunden...

Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe, ist nicht ganz so einfach.

Vielen Dank schon mal im Voraus,
Olaf

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Fr 7. Jan 2005, 16:50

ja es gibt 2 Möglichkeiten...

die erste: mit der Methode num_fields die Anzahl der Felder erfragen und dann mit $db->f(feldnummer) rausholen

oder mit der Funktion metadata() die Metadaten (also die Felder) erfragen und dann dasselbe wie oben...

netronaut
Beiträge: 12
Registriert: Sa 17. Jan 2004, 01:41
Kontaktdaten:

Beitrag von netronaut » Fr 7. Jan 2005, 18:09

Hallo,

vielen Dank für die superschnelle Antwort, das werde ich gleich mal ausprobieren!

Zwischenzeitlich habe ich sogar noch eine dritte (aber nicht ganz Contenido-konforme) Lösung gefunden:
mit query_id() die Result-Nummer rausfischen, dann mit einem einfachen $row = mysql_fetch_array(query_id()) den Datensatz holen und mit foreach auslesen.

Aber dann verlässt man ja die Contenido-Klasse, weil man nicht mehr next_record() benutzt, das ist natürlich nicht so schön. Am besten wäre es, wenn next_record gleich das assoziative Array des aktuellen Datensatzes zurückgeben würde (bzw. 0, wenn es keinen weiteren Datensatz gibt). Vielleicht eine Idee für die Version 4.5.

Also nochmal vielen Dank!

#:-) olaf

plamedi
Beiträge: 1
Registriert: Do 2. Apr 2009, 16:56
Kontaktdaten:

Re: DB-Abfrage

Beitrag von plamedi » Do 2. Apr 2009, 17:00

Hallo,

vielen Dank für die Antwort, vielleicht ist es u spat hier zu schreiben, aber ich habe's fur tagen probirert und jett habe ich die Losung (sogar drei Losiungen) gefunden, kann kaum warten es aus zu probieren!

Nochmal vielen Dank!

MichFress
Beiträge: 750
Registriert: Mo 5. Jan 2004, 22:32
Wohnort: Bochum
Kontaktdaten:

Re: DB-Abfrage

Beitrag von MichFress » Fr 3. Apr 2009, 08:20

es gibt noch eine Methode, die eine Zeile des Ergebnisses als Array zurückgibt - das wäre wohl am ehesten das, was du suchst... Find ich aber gerade auf die Schnelle nicht wieder.
"Es wird keine Handlung geben, keine Geschichte mit ihrer Versprechung auf einen Anfang und ihrer Hoffnung auf ein Ende." (Andrzej Stasiuk)

Gesperrt