oci_fetch_all
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_fetch_all — Holt mehrere Reihen einer Abfrage in ein zweidimensionales Array
Beschreibung
$statement
, array &$output
[, int $skip
= 0
[, int $maxrows
= -1
[, int $flags
= OCI_FETCHSTATEMENT_BY_COLUMN
+ OCI_ASSOC
]]] ) : intHolt mehrere Zeilen einer Abfrage in ein zweidimensionales Array. Standardmäßig werden alle Zeilen zurückgeliefert.
Diese Funktion kann nur einmal für jede Abfrage, die mit oci_execute() ausgeführt wurde, aufgerufen werden.
Parameter-Liste
-
statement
-
Der Identifizierer eines gültigen OCI8-Ausdrucks, der von oci_parse() erzeugt und von oci_execute() oder einem REF CURSOR-Ausdruck verwendet wird.
-
output
-
Die Variable, die die gelieferten Zeilen enthalten wird.
LOB-Spalten werden als Zeichenketten zurückgegeben, wo Oracle die Umwandlung unterstützt.
Informationen wie Daten und Typen geholt werden, sind der Dokumentation von oci_fetch_array() zu entnehmen.
-
skip
-
Die Anzahl der zu verwerfenden Anfangszeilen beim Holen des Ergebnisses. Standardwert ist 0, so dass von der ersten Zeile an zurückgegeben wird.
-
maxrows
-
Die Anzahl der zurückzugebenden Zeilen. Der Standardwert ist -1, was bedeutet dass alle Zeilen von
skip
+ 1 an zurückgegeben werden. -
flags
-
Der Parameter
flags
legt die Array-Struktur fest, und ob assoziative Arrays verwendet werden sollen.oci_fetch_all() Array-Struktur-Modi Konstante Beschreibung OCI_FETCHSTATEMENT_BY_ROW
Das äußere Array wird ein Unterarray pro Abfragezeile enthalten. OCI_FETCHSTATEMENT_BY_COLUMN
Das äußere Array wird ein Unterarray pro Abfragespalte enthalten. Das ist der Standardwert. Arrays können entweder nach Spaltennamen oder numerisch indexiert werden. Nur ein Index-Modus wird zurückgegeben.
oci_fetch_all() Array-Index-Modi Konstante Beschreibung OCI_NUM
Numerische Indizes werden für das Array jeder Spalte verwendet. OCI_ASSOC
Assoziative Indizes werden für das Array jeder Spalte verwendet. Das ist der Standardwert. Der Additionsoperator "+" ist zu verwenden, um eine Kombination von Array-Struktur- und -Index-Modus zu wählen.
Für Spaltennamen, die Groß- und Kleinschreibung nicht unterscheiden, was bei Oracle der Standard ist, werden Arrayschlüssel in Großschreibung verwendet. Spalten, die Groß- und Kleinschreibung unterscheiden, verwenden die genaue Schreibweise. var_dump() kann auf dem
output
angewendet werden, um die richtige Schreibweise für jede Abfrage zu prüfen.Abfragen, die mehr als eine Spalte mit demselben Namen haben, sollten Spaltenaliase verwenden. Andernfalls wird nur einer der Spalten in einem assoziativen Array auftauchen.
Rückgabewerte
Gibt die Anzahl der Zeile in output
zurück, die 0 oder
mehr sein kann. Im Fehlerfall wird FALSE
zurückgegeben.
Beispiele
Beispiel #1 oci_fetch_all() Beispiel
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
oci_execute($stid);
$nrows = oci_fetch_all($stid, $res);
echo "$nrows Zeilen geholt<br>\n";
var_dump($res);
// die var_dump Ausgabe ist:
// 2 Zeilen geholt
// array(2) {
// ["POSTAL_CODE"]=>
// array(2) {
// [0]=>
// string(6) "00989x"
// [1]=>
// string(6) "10934x"
// }
// ["CITY"]=>
// array(2) {
// [0]=>
// string(4) "Rom"
// [1]=>
// string(6) "Venedig"
// }
// }
// ordentliche Ausgabe der Ergebnisse
echo "<table border='1'>\n";
foreach ($res as $col) {
echo "<tr>\n";
foreach ($col as $item) {
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
oci_free_statement($stid);
oci_close($conn);
?>
Beispiel #2 oci_fetch_all() Beispiel mit OCI_FETCHSTATEMENT_BY_ROW
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
oci_execute($stid);
$nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW);
echo "$nrows Zeilen geholt<br>\n";
var_dump($res);
// die Ausgabe ist:
// 2 Zeilen geholt
// array(2) {
// [0]=>
// array(2) {
// ["POSTAL_CODE"]=>
// string(6) "00989x"
// ["CITY"]=>
// string(4) "Rom"
// }
// [1]=>
// array(2) {
// ["POSTAL_CODE"]=>
// string(6) "10934x"
// ["CITY"]=>
// string(6) "Venedig"
// }
// }
oci_free_statement($stid);
oci_close($conn);
?>
Beispiel #3 oci_fetch_all() mit OCI_NUM
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
oci_execute($stid);
$nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW + OCI_NUM);
echo "$nrows Zeilen geholt<br>\n";
var_dump($res);
// die Ausgabe ist:
// 2 Zeilen geholt
// array(2) {
// [0]=>
// array(2) {
// [0]=>
// string(6) "00989x"
// [1]=>
// string(4) "Rom"
// }
// [1]=>
// array(2) {
// [0]=>
// string(6) "10934x"
// [1]=>
// string(6) "Venedig"
// }
// }
oci_free_statement($stid);
oci_close($conn);
?>
Anmerkungen
Hinweis:
Die Verwendung von
skip
ist sehr ineffizient. All die zu überspringenden Zeilen sind in der Ergebnismenge, die von der Datenbank an PHP zurückgegeben wird. Dann werden sie verworfen. Es ist effizienter SQL zu nutzen, um Offset und Bereich der Zeilen in der Abfrage zu beschränken. Ein Beispiel kann der Dokumentation von oci_fetch_array() entnommen werden.
Hinweis:
Abfragen, die eine große Anzahl von Zeilen liefern, sind speichereffizienter, wenn eine Funktion wie oci_fetch_array(), die nur einzelne Zeilen holt, verwendet wird.
Hinweis:
Bei Queries, die eine große Anzahl an Zeilen zurückliefern, kann die Laufzeit beträchtlich verbessert werden, indem man oci8.default_prefetch erhöht oder oci_set_prefetch() verwendet.
Hinweis:
Dies gibt keine Zeilen von "Implizeten Ergebnismengen" von Oracle Database 12c zurück. Statt dessen ist oci_fetch_array() zu verwenden.
Siehe auch
- oci_fetch() - Holt die nächste Zeile einer Abfrage in interne Puffer
- oci_fetch_array() - Liefert die nächste Zeile einer Abfrage als assoziatives oder numerisches Array
- oci_fetch_assoc() - Liefert die nächste Zeile einer Abfrage als assoziatives Array
- oci_fetch_object() - Liefert die nächste Zeile einer Abfrage als Objekt
- oci_fetch_row() - Liefert die nächste Zeile einer Abfrage als numerisches Array
- oci_set_prefetch() - Sets number of rows to be prefetched by queries
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-oci-fetch-all.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.