oci_fetch_all

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_all Ruft mehrere Datensätze einer Abfrage in ein zweidimensionales Array ab

Beschreibung

oci_fetch_all(
    resource $statement,
    array &$output,
    int $offset = 0,
    int $limit = -1,
    int $flags = OCI_FETCHSTATEMENT_BY_COLUMN | OCI_ASSOC
): int

Ruft mehrere Datensätze einer Abfrage in ein zweidimensionales Array ab. Standardmäßig werden alle Datensätze zurückgegeben.

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 zurückgegebenen Datensätze enthalten wird.

LOB-Spalten werden als Zeichenketten zurückgegeben, sofern Oracle die Umwandlung unterstützt.

Informationen, wie Daten und Typen abgerufen werden, sind der Dokumentation von oci_fetch_array() zu entnehmen.

offset

Die Anzahl der zu verwerfenden Anfangsdatensätze beim Abrufen des Ergebnisses. Standardwert ist 0, sodass vom ersten Datensatz an zurückgegeben wird.

limit

Die Anzahl der zurückzugebenden Datensätze. Der Standardwert ist -1, was bedeutet, dass alle Datensätze von offset + 1 an zurückgegeben werden.

flags

Der Parameter flags legt die Array-Struktur fest und ob assoziative Arrays verwendet werden sollen.

Struktur-Modi für das oci_fetch_all()-Array
Konstante Beschreibung
OCI_FETCHSTATEMENT_BY_ROW Das äußere Array wird ein Unterarray pro Abfragedatensatz 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.

Index-Modi für das oci_fetch_all()-Array
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-Modi 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 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 eine der Spalten in einem assoziativen Array auftauchen.

Rückgabewerte

Gibt die Anzahl der Datensätze in output zurück, die 0 oder mehr sein kann.

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 Datensätze abgerufen<br>\n";
var_dump($res);

// die var_dump Ausgabe ist:
//    2 Datensätze abgerufen
//    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($itemENT_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$resnullnullOCI_FETCHSTATEMENT_BY_ROW);

echo 
"$nrows Datensätze abgerufen<br>\n";
var_dump($res);

// die Ausgabe ist:
//    2 Datensätze abgerufen
//    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$resnullnullOCI_FETCHSTATEMENT_BY_ROW OCI_NUM);

echo 
"$nrows Datensätze abgerufen<br>\n";
var_dump($res);

// die Ausgabe ist:
//    2 Datensätze abgerufen
//    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 offset ist sehr ineffizient. All die zu überspringenden Datensätze sind in der Ergebnismenge, die von der Datenbank an PHP zurückgegeben wird. Dann werden sie verworfen. Es ist effizienter SQL zu nutzen, um den Offset und den Bereich der Datensätze 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 Datensätze liefern, sind speichereffizienter, wenn eine Funktion wie oci_fetch_array() verwendet wird, die nur einzelne Datensätze abruft.

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:

Diese Funktion gibt keine Datensätze aus einer impliziten Ergebnismenge einer Oracle 12c-Datenbank zurück. Verwenden Sie stattdessen die Funktion oci_fetch_array().

Siehe auch

  • oci_fetch() - Ruft die nächste Zeile einer Abfrage in einen internen Puffer ab
  • 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

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

How to overcome Safari's iframe cookie block?

To overcome Safari's iframe cookie block, you can use the SameSite=None; Secure cookie attribute in conjunction with a third-party domain that sup ...

Geschrieben von Joniemartinez am 21.12.2024 13:28:24
Forum: HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
Probleme mit speichern in Datenbank in französisch

Les erreurs fréquentes lors de l'enregistrement de données dans une base de données incluent des problèmes de connexion, des erreurs de syntax ...

Geschrieben von Alice12 am 18.12.2024 05:07:21
Forum: PHP Developer Forum
Gibt es eine API zum Abrufen von PHP-Code-Referenzen?

PHP.net bietet eine umfassende Online-Dokumentation für PHP. Es gibt keine offizielle API zum Abrufen von PHP-Dokumentationen direkt, aber du kan ...

Geschrieben von Alice12 am 18.12.2024 05:03:27
Forum: PHP Developer Forum
Ein data POST via Curl funktioniert nicht.

It looks like your PHP cURL request isn't working because you're not properly setting the CURLOPT_CUSTOMREQUEST option; it should be a string, so ...

Geschrieben von noah1600 am 16.12.2024 04:16:13
Forum: PHP Developer Forum