PDOStatement::fetch()
PDOStatement::fetch
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::fetch — Hämtar nästa rad från en resultatuppsättning
Beskrivning
public PDOStatement::fetch(
int $mode = PDO::FETCH_DEFAULT, int $cursorOrientation = PDO::FETCH_ORI_NEXT, int $cursorOffset = 0
): mixed
Hämtar en rad från en resultatuppsättning som är kopplad till ett PDOStatement-objekt. Parametern mode avgör hur PDO returnerar raden.
Parametrar
- mode
- Styr hur nästa rad returneras. Det här värdet måste vara en av PDO::FETCH_*-konstanterna. Som standard används värdet för PDO::ATTR_DEFAULT_FETCH_MODE (som i sin tur standardmässigt är PDO::FETCH_BOTH).
- PDO::FETCH_ASSOC: Returnerar en array indexerad av kolumnnamn så som de återfinns i resultatuppsättningen.
- PDO::FETCH_BOTH (standard): Returnerar en array indexerad både av kolumnnamn och 0-baserade kolumnnummer.
- PDO::FETCH_BOUND: Returnerar true och tilldelar värdena i resultatuppsättningen till de PHP-variabler som bundits med PDOStatement::bindColumn.
- PDO::FETCH_CLASS: Returnerar en ny instans av den begärda klassen. Kolumnvärdena mappas till egenskaper i klassen. Efter att egenskaperna satts anropas konstruktorn, om inte även PDO::FETCH_PROPS_LATE används. Om du inkluderar PDO::FETCH_CLASSTYPE (t.ex. PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE) så bestäms klassens namn från värdet i den första kolumnen.
- PDO::FETCH_INTO: Uppdaterar en befintlig instans av den begärda klassen, där kolumnvärdena mappas till namngivna egenskaper.
- PDO::FETCH_LAZY: En kombination av PDO::FETCH_BOTH och PDO::FETCH_OBJ, som returnerar ett PDORow-objekt och skapar egenskaper efter kolumnnamn vid åtkomst.
- PDO::FETCH_NAMED: Returnerar en array på samma sätt som PDO::FETCH_ASSOC, men om det finns flera kolumner med samma namn så blir värdet för den nyckeln en array med samtliga värden i de kolumnerna.
- PDO::FETCH_NUM: Returnerar en array indexerad efter kolumnnummer, med start på 0.
- PDO::FETCH_OBJ: Returnerar ett anonymt objekt med egenskaper som motsvarar kolumnnamn.
- PDO::FETCH_PROPS_LATE: Används tillsammans med PDO::FETCH_CLASS för att konstruktorn ska anropas innan egenskaperna tilldelas sina värden.
- cursorOrientation
- För ett PDOStatement-objekt som representerar en ”scrollable cursor” anger detta värde vilken rad som ska returneras. Detta värde måste vara en av PDO::FETCH_ORI_*-konstanterna och är som standard PDO::FETCH_ORI_NEXT.
- För att be om en scrollable cursor behöver du sätta attributet PDO::ATTR_CURSOR till PDO::CURSOR_SCROLL när du förbereder uttalandet med PDO::prepare.
- cursorOffset
- För ett PDOStatement-objekt med en scrollable cursor där cursorOrientation är inställt på PDO::FETCH_ORI_ABS anger detta värde det absoluta radnumret som ska hämtas ur resultatuppsättningen.
- För ett PDOStatement-objekt med en scrollable cursor där cursorOrientation är inställt på PDO::FETCH_ORI_REL anger detta värde vilken rad som ska hämtas i förhållande till var pekaren befann sig före anropet till PDOStatement::fetch().
Returvärden
Returnerat värde på framgång beror på vilken fetch type (mode) som används. I samtliga fall returneras false vid misslyckande eller om det inte finns fler rader att hämta.
Fel/Uppslag
- Utlöser ett fel på nivån E_WARNING om attributet PDO::ATTR_ERRMODE är inställt på PDO::ERRMODE_WARNING.
- Kastar ett PDOException-fel om attributet PDO::ATTR_ERRMODE är inställt på PDO::ERRMODE_EXCEPTION.
Exempel
Exempel 1: Hämta rader med olika hämtlägen
<?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* PDO::FETCH_ASSOC */ print "PDO::FETCH_ASSOC: Returnera nästa rad som en array indexerad av kolumnnamn\n"; $result = $sth->fetch(PDO::FETCH_ASSOC); print_r($result); print "\n"; /* PDO::FETCH_BOTH */ print "PDO::FETCH_BOTH: Returnera nästa rad som en array indexerad av både kolumnnamn och kolumnnummer\n"; $result = $sth->fetch(PDO::FETCH_BOTH); print_r($result); print "\n"; /* PDO::FETCH_LAZY */ print "PDO::FETCH_LAZY: Returnera nästa rad som ett PDORow-objekt med kolumnnamn som egenskaper\n"; $result = $sth->fetch(PDO::FETCH_LAZY); print_r($result); print "\n"; /* PDO::FETCH_OBJ */ print "PDO::FETCH_OBJ: Returnera nästa rad som ett anonymt objekt med kolumnnamn som egenskaper\n"; $result = $sth->fetch(PDO::FETCH_OBJ); print $result->name; print "\n"; ?>
Exempelutdata kan se ut så här:
PDO::FETCH_ASSOC: Returnera nästa rad som en array indexerad av kolumnnamn Array ( [name] => apple [colour] => red ) PDO::FETCH_BOTH: Returnera nästa rad som en array indexerad av både kolumnnamn och kolumnnummer Array ( [name] => banana [0] => banana [colour] => yellow [1] => yellow ) PDO::FETCH_LAZY: Returnera nästa rad som ett PDORow-objekt med kolumnnamn som egenskaper PDORow Object ( [name] => orange [colour] => orange ) PDO::FETCH_OBJ: Returnera nästa rad som ett anonymt objekt med kolumnnamn som egenskaper kiwi
Exempel 2: Hämta rader med en scrollable cursor
<?php function readDataForwards($dbh) { $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET'; $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) { $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n"; print $data; } } function readDataBackwards($dbh) { $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet'; $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST); do { $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n"; print $data; } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR)); } print "Reading forwards:\n"; readDataForwards($conn); print "Reading backwards:\n"; readDataBackwards($conn); ?>
Exempelutdata kan se ut så här:
Reading forwards: 21 10 5 16 0 5 19 20 10 Reading backwards: 19 20 10 16 0 5 21 10 5
Exempel 3: Konstruktionens ordning
När objekt hämtas via PDO::FETCH_CLASS sätts objektets egenskaper först, och därefter anropas klassens konstruktor. Om även PDO::FETCH_PROPS_LATE används sker detta i omvänd ordning, d.v.s. konstruktorn anropas före egenskaperna sätts.
<?php class Person { private $name; public function __construct() { $this->tell(); } public function tell() { if (isset($this->name)) { echo "I am {$this->name}.\n"; } else { echo "I don't have a name yet.\n"; } } } $sth = $dbh->query("SELECT * FROM people"); $sth->setFetchMode(PDO::FETCH_CLASS, 'Person'); $person = $sth->fetch(); $person->tell(); $sth->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Person'); $person = $sth->fetch(); $person->tell(); ?>
Exempelutdata kan se ut ungefär så här:
I am Alice. I am Alice. I don't have a name yet. I am Bob.
Se även
- PDO::prepare - Förbereder ett uttryck för exekvering och returnerar ett statement-objekt
- PDOStatement::execute - Exekverar ett förberett uttalande
- PDOStatement::fetchAll - Hämtar återstående rader från en resultatuppsättning
- PDOStatement::fetchColumn - Returnerar en enstaka kolumn från nästa rad i en resultatuppsättning
- PDOStatement::fetchObject - Hämtar nästa rad och returnerar den som ett objekt
- PDOStatement::setFetchMode - Ställer in standardhämtläget för detta statement
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/pdostatement.fetch.php
PHP
Funktioner
Funktionsreferens
Databas-tillägg
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp Huddinge som har sponsrat Linux.se med webbhotell.