logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll
18/06/2025, by Ivan

Eine Select-Abfrage gibt immer ein Result-Set-Objekt zurück, das null oder mehr Datensätze enthält. Es gibt verschiedene Möglichkeiten, Daten aus diesem Result-Set zu erhalten, abhängig vom Anwendungsfall. Standardmäßig werden Datensätze als Objekte zurückgegeben, sofern der Fetch-Modus nicht geändert wird (siehe: setFetchMode).

Der häufigste Anwendungsfall ist das Durchlaufen des Result-Sets mit einer foreach()-Schleife.

// Statische Abfrage:
$result = $connection->query("SELECT field1, field2 FROM {mytable}");
foreach ($result as $record) {
  // Etwas mit jedem $record tun
}

// Dynamische Abfrage
$result = $query->execute();
foreach ($result as $record) {
  // Etwas mit jedem $record tun.
}

Je nach Verwendungszweck gibt es jedoch weitere Möglichkeiten, Datensätze abzurufen.

Um explizit den nächsten Datensatz zu erhalten, verwenden Sie:

$record = $result->fetch();            // Standard-Fetch-Modus verwenden.
$record = $result->fetchObject();    // Als stdClass-Objekt holen.
$record = $result->fetchAssoc();     // Als assoziatives Array holen.

Wenn kein nächster Datensatz vorhanden ist, wird FALSE zurückgegeben. In der Regel sollte fetch() zugunsten von fetchObject() und fetchAssoc() vermieden werden, da diese besser lesbar sind. Wenn Sie einen anderen von PDO unterstützten Fetch-Modus benötigen, verwenden Sie fetch().

Um nur ein einzelnes Feld aus dem Result-Set zu holen, verwenden Sie:

$record = $result->fetchField($column_index);

Der Standardwert für $column_index ist 0 für das erste Feld.

Zur Zählung der von DELETE-, INSERT- oder UPDATE-Anweisungen betroffenen Zeilen verwenden Sie:

$number_of_rows = $result->rowCount();

Zur Zählung der von einer SELECT-Anfrage zurückgegebenen Zeilen verwenden Sie:

$number_of_rows = $connection->select('mytable')->countQuery()->execute()->fetchField();

Um alle Datensätze gleichzeitig in einem Array abzurufen, verwenden Sie eine der folgenden Methoden:

// Alle Datensätze als indiziertes Array von stdClass-Objekten abrufen.
$result->fetchAll();

// Alle Datensätze als assoziatives Array, indexiert nach dem angegebenen Feld.
$result->fetchAllAssoc($field);

// Ein 2-spaltiges Result-Set als assoziatives Array Feld0 => Feld1.
$result->fetchAllKeyed();
// Sie können auch die Spaltennummern angeben, die als Schlüssel und Werte verwendet werden sollen
$result->fetchAllKeyed(0,2); // Feld 0 => Feld 2
$result->fetchAllKeyed(1,0); // Feld 1 => Feld 0
// Für ein Array, bei dem Schlüssel und Werte dasselbe Feld enthalten (z.B. für 'checkboxes' Formularelement), verwenden Sie:
$result->fetchAllKeyed(0,0); // Feld 0 => Feld 0, z.B. [article] => [article]

// Einspaltiges Result-Set als einfaches Array abrufen.
$result->fetchCol();
// Spaltennummer kann angegeben werden, Standard ist die erste Spalte.
$result->fetchCol($column_index);

Beachten Sie, dass fetchAll() und fetchAllAssoc() standardmäßig im Fetch-Modus abrufen, der in der Anfrage gesetzt wurde (numerisches Array, assoziatives Array oder Objekt). Dies kann geändert werden, indem eine neue Fetch-Konstante übergeben wird. Für fetchAll() ist das der erste Parameter, für fetchAllAssoc() der zweite Parameter. Beispiele:

// Ein Array von Arrays, indexiert nach dem Feld 'id'.
$result->fetchAllAssoc('id', PDO::FETCH_ASSOC);
// Ein Array von Arrays mit numerischen und assoziativen Schlüsseln.
$result->fetchAll(PDO::FETCH_BOTH);

Da PHP Methodenaufrufe an zurückgegebene Objekte verketten kann, wird die Variable $result oft komplett übersprungen, z.B.:

// Assoziatives Array von IDs zu Titeln.
$examples = $connection->query("SELECT id, title FROM {mytable}")->fetchAllKeyed();

// Ein einzelner Datensatz aus der Datenbank.
$myobj = $connection->query("SELECT * FROM {mytable} WHERE example = :example", [':example' => $example])->fetchObject();

// Ein einzelner Wert aus der Datenbank.
$myval = $connection->query("SELECT example FROM {mytable} WHERE id = :id", [':id' => $id])->fetchField();

Wenn Sie ein einfaches Array wie [1, 2, 3, 4, 5] benötigen, müssen Sie mit etwas Ähnlichem wie [1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5] vorliebnehmen. Sie können dies so erreichen:

$ids = $connection->query("SELECT id FROM {example}")->fetchAllKeyed(0,0);

 

Source URL:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.