Skupovi rezultata
Select upit će uvek vratiti objekat skupa rezultata koji sadrži nula ili više zapisa. Postoji nekoliko načina da se dobiju podaci iz ovog skupa rezultata u zavisnosti od slučaja upotrebe. Zapisi se podrazumevano izvlače kao objekti, osim ako ne promenite režim izvlačenja (vidi: setFetchMode).
Najčešći slučaj je iteracija kroz skup rezultata pomoću foreach() petlje.
// Statički upit: $result = $connection->query("SELECT field1, field2 FROM {mytable}"); foreach ($result as $record) { // Uradi nešto sa svakim $record } // Dinamički upit $result = $query->execute(); foreach ($result as $record) { // Uradi nešto sa svakim $record. }
Međutim, u zavisnosti za šta su rezultati potrebni, postoje i drugi načini dobijanja zapisa.
Da biste eksplicitno dobili sledeći zapis, koristite:
$record = $result->fetch(); // Koristi podrazumevani režim izvlačenja. $record = $result->fetchObject(); // Izvlači kao stdClass objekat. $record = $result->fetchAssoc(); // Izvlači kao asocijativni niz.
Ako nema sledećeg zapisa, vraća se FALSE. Obično je bolje izbegavati fetch() u korist fetchObject() i fetchAssoc(), jer su poslednja dva jasnija. Ako vam treba neki drugi režim izvlačenja podržan od PDO, koristite fetch().
Da biste dobili samo jedno polje iz skupa rezultata, koristite:
$record = $result->fetchField($column_index);
Podrazumevana vrednost za $column_index je 0, što označava prvo polje.
Za brojanje redova koje vraća DELETE, INSERT ili UPDATE upit, koristite:
$number_of_rows = $result->rowCount();
Za brojanje redova koje vraća SELECT upit, koristite:
$number_of_rows = $connection->select('mytable')->countQuery()->execute()->fetchField();
Da biste izvukli sve zapise u jedan niz, koristite jednu od sledećih metoda:
// Izvuci sve zapise u indeksirani niz stdClass objekata. $result->fetchAll(); // Izvuci sve zapise u asocijativni niz ključan prema određenom polju rezultata. $result->fetchAllAssoc($field); // Izvuci rezultat sa 2 kolone kao asocijativni niz polje 0 => polje 1. $result->fetchAllKeyed(); // Takođe možete specificirati koje dve kolone koristiti navođenjem njihovih indeksa $result->fetchAllKeyed(0,2); // biće polje 0 => polje 2 $result->fetchAllKeyed(1,0); // biće polje 1 => polje 0 // Ako vam treba niz gde su ključevi i vrednosti isto polje (npr. za kreiranje elementa forme 'checkboxes'), sledeći način je validan: $result->fetchAllKeyed(0,0); // biće polje 0 => polje 0, npr. [article] => [article] // Izvuci rezultat sa jednom kolonom kao običan niz. $result->fetchCol(); // Možete navesti indeks kolone, inače je podrazumevano prva kolona $result->fetchCol($column_index);
Obratite pažnju da fetchAll() i fetchAllAssoc() po podrazumevanoj vrednosti izvlače podatke koristeći režim izvlačenja postavljen u upitu (numerički niz, asocijativni niz ili objekat). To možete promeniti prosleđivanjem nove konstante režima izvlačenja. Za fetchAll() to je prvi parametar, a za fetchAllAssoc() drugi parametar. Primeri:
// Dobij asocijativni niz nizova indeksiran po polju 'id'. $result->fetchAllAssoc('id', PDO::FETCH_ASSOC); // Dobij niz nizova sa i numeričkim i asocijativnim ključevima. $result->fetchAll(PDO::FETCH_BOTH);
Pošto PHP podržava lančano pozivanje metoda vraćenih objekata, često se promenljiva $result potpuno preskače, na primer:
// Dobij asocijativni niz id-ova ka naslovima. $examples = $connection->query("SELECT id, title FROM {mytable}")->fetchAllKeyed(); // Dobij jedan zapis iz baze. $myobj = $connection->query("SELECT * FROM {mytable} WHERE example = :example", [':example' => $example])->fetchObject(); // Dobij jednu vrednost iz baze. $myval = $connection->query("SELECT example FROM {mytable} WHERE id = :id", [':id' => $id])->fetchField();
Ako vam treba običan niz tipa [1, 2, 3, 4, 5], moraćete da prihvatite nešto slično [1=>1, 2=>2, 3=>3, 4=>4, 5=>5]. Ovo možete dobiti pomoću:
$ids = $connection->query("SELECT id FROM {example}")->fetchAllKeyed(0,0);
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.