(PHP 5, PECL sqlite >= 1.0.0)
sqlite_fetch_all -- SQLiteResult->fetchAll -- SQLiteUnbuffered->fetchAll — Holt sich alle Reihen eines Abfrageergebnisses und liefert sie als Array im Array zurück
Objektorientierter Stil (Methode):
sqlite_fetch_all() liefert ein Array des gesamten Abfrageergebnisses von der Ressource result zurück. Es ähnelt dem Aufruf von sqlite_query() (oder sqlite_unbuffered_query()) und danach sqlite_fetch_array()-Aufrufen für jede einzelne Reihe des Abfrageergebnisses.
Die Ressource des SQLite-Ergebnisses. Der Parameter wird bei der objektorientierten Notation nicht benötigt.
Der optionale Parameter Ergebnis_Typ akzeptiert eine Konstante und bestimmt, wie das zurückgegebene Array indiziert wird. Während mit SQLITE_ASSOC nur assoziative Indizes (Namensfelder) zurückgegeben werden, werden mit SQLITE_NUM nur numerische Indizes (geordnete Feldnummern) zurückgegeben. SQLITE_BOTH gibt sowohl assoziative als auch numerische Indizes zurück. SQLITE_BOTH ist die Standardeinstellung.
Falls der Parameter decode_binary auf TRUE gesetzt ist (das ist die Standardeinstellung), dekodiert PHP die Binärkodierung, die bei Verwendung von sqlite_escape_string() auf die Daten angewendet wird. Solange Sie die Daten nicht mit anderen SQLite-Fähigen Applikationen teilen, sollten Sie diesen Wert in der Standardeinstellung lassen.
Liefert ein Array mit den übrigen Reihen des Abfrageergebnisses. Wenn es direkt nach sqlite_query() aufgerufen wird, werden alle Reihen zurückgegeben. Wenn es nach sqlite_fetch_array() aufgerufen wird, wird der Rest zurückgegeben. Wenn es keine Reihen in einem Abfrageergebnis mehr gibt, liefert es ein leeres Array.
Die Groß- und Kleinschreibung der Spaltennamen, die von SQLITE_ASSOC und SQLITE_BOTH zurückgegeben werden, wird entsprechend der Konfigurationsdirektive sqlite.assoc_case geändert.
Beispiel #1 Prozedurales Beispiel
<?php
$dbhandle = sqlite_open('sqlitedb');
$query = sqlite_query($dbhandle, 'SELECT name, email FROM benutzer LIMIT 25');
$result = sqlite_fetch_all($query, SQLITE_ASSOC);
foreach ($result as $entry) {
echo 'Name: ' . $entry['name'] . ' E-Mail: ' . $entry['email'];
}
?>
Beispiel #2 Objektorientiertes Beispiel
<?php
$dbhandle = new SQLiteDatabase('sqlitedb');
$query = $dbhandle->query('SELECT name, email FROM benutzer LIMIT 25'); // gepuffertes Abfrageergebnis
$query = $dbhandle->unbufferedQuery('SELECT name, email FROM benutzer LIMIT 25'); // ungepuffertes Abfrageergebnis
$result = $query->fetchAll(SQLITE_ASSOC);
foreach ($result as $entry) {
echo 'Name: ' . $entry['name'] . ' E-Mail: ' . $entry['email'];
}
?>
The usage of sqlite_fetch_all should be your choise
(instead the well known practice of "while()" loop)
when unmodified tabledata is prefered.
Example code for a better illustration:
<?php
if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)):
$query = "SELECT x, y FROM sometable LIMIT 3;";
$result = sqlite_query($dbhandle, $query);
// usage with sqlite_fetch_all
$array1 = sqlite_fetch_all($result, SQLITE_ASSOC);
// the "well known practice"
$i = '0';
while ($row = sqlite_fetch_array($result, SQLITE_ASSOC)):
$array2["$i"] = $row;
$i++;
endwhile;
sqlite_close($dbhandle);
endif;
?>
There are no differents within the values of array1 and array2.
Both arrays will be something like:
Array
(
[0] => Array
(
[x] => 22004
[y] => example_data1
)
[1] => Array
(
[x] => 92044
[y] => example_data2
)
[2] => Array
(
[x] => 143060
[y] => example_data3
)
)
If you want to let me know about your comments, feel
free to send me a note via feedback-formular at:
http://www.d0x.de/pages/kontakt.php