Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Oracle: oci_detch_array mit Spaltennamen?

0 views
Skip to first unread message

Martin Fischer

unread,
Jul 7, 2009, 5:46:59 AM7/7/09
to
Hallo,

gibt es eine Möglichkeit als erste Zeile die Spaltennamen
auszulesen ?

Martin

Dominik Echterbruch

unread,
Jul 7, 2009, 6:01:59 AM7/7/09
to
Martin Fischer wrote:
>
> gibt es eine Möglichkeit als erste Zeile die Spaltennamen
> auszulesen ?

Nicht direkt, AFAIR. Aber ein Studium der Doku hat mir gerade gesagt,
dass es oci_fetch_array(<$resource>, OCI_ASSOC) bzw. oci_fetch_assoc()
gibt. Benutzt du eine der Funktionen, kannst du mittels array_keys ganz
einfach die Spaltennamen ermitteln. Das ganze in ein if geschachtelt,
damit es nur beim Verarbeiten der ersten Zeile ein Mal ausgeführt wird,
und alles wird gut.

Grüße,
Dominik
--
Wo kämen wir denn da hin, wenn jeder nur fragte "Wo kämen wir denn
da hin?", aber niemand ginge, um zu sehen, wohin wir kämen, wenn wir
gingen?
(Autor unbekannt)

Martin Fischer

unread,
Jul 7, 2009, 7:51:22 AM7/7/09
to
Hallo Dominik,

ich habe das probiert, allerdings liefert das Array der keys die
Assoziation, d. h. Array[0] => ROWNUM etc.

Zwischenzeitlich ahbe ich eine bessere Lösung gefunden und zwar über
oci_fetch_all, das ein Array befüllt und die Zeilena nzahl als
Ergebnis zurückliefert.

Das sieht dann so aus:

$nrows = oci_fetch_all($stid, $results);

if ($nrows > 0) {
echo "<table border=\"1\">";

echo "<tr>";
foreach ($results as $key => $val) {echo "<th>$key</th>";}
echo "</tr>";

for ($i = 0; $i < $nrows; $i++) {
echo "<tr>";
foreach ($results as $data) {
echo "<td>$data[$i]</td>";
}
echo "</tr>";
}
echo "</table>";
}

else {echo "Keine Daten gefunden<br />";}


Trotzdem vielen Dank für Deinen Hinweis, werde mich damit auch noch
intensiver beschäftigen müssen.

Martin

Dominik Echterbruch

unread,
Jul 7, 2009, 12:39:33 PM7/7/09
to
Martin Fischer wrote:
>
> ich habe das probiert, allerdings liefert das Array der keys die
> Assoziation, d. h. Array[0] => ROWNUM etc.

War es nicht das, was du wolltest? Ich hatte dich so verstanden.
Vielleicht liefern die Oracle Funktionen aber auch irgendwas völlig
anderes zurück, als die MySQL Funktionen. Ich kann das hier mangels
Oracle leider grad nicht testen.

> Zwischenzeitlich ahbe ich eine bessere Lösung gefunden und zwar über
> oci_fetch_all, das ein Array befüllt und die Zeilena nzahl als
> Ergebnis zurückliefert.

Wieso Zeilenanzahl? In deinem Ursprungsbeitrag hast du von Spaltennamen
gesprochen.

> $nrows = oci_fetch_all($stid, $results);
> if ($nrows > 0) {
> echo "<table border=\"1\">";
> echo "<tr>";
> foreach ($results as $key => $val) {echo "<th>$key</th>";}

Und genau hier gibst du die Spaltennamen aus. Das ist das, was ich als
Ergebnis meines Aufrufs erwartet hatte und was ich als dein Anliegen
verstanden hatte.

0 new messages