PDOStatement::fetch: Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '== 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...') |
(Ingen skillnad)
|
Versionen från 23 december 2024 kl. 07.41
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.