PDOStatement::fetch: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(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...')
 
(Tömde sidan)
Märke: Rensning
 
Rad 1: Rad 1:
== 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 ====
<pre>
<?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";
?>
</pre>
Exempelutdata kan se ut så här:
<pre>
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
</pre>
==== Exempel 2: Hämta rader med en scrollable cursor ====
<pre>
<?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);
?>
</pre>
Exempelutdata kan se ut så här:
<pre>
Reading forwards:
21    10    5
16    0    5
19    20    10
Reading backwards:
19    20    10
16    0    5
21    10    5
</pre>
==== 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.
<pre>
<?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();
?>
</pre>
Exempelutdata kan se ut ungefär så här:
<pre>
I am Alice.
I am Alice.
I don't have a name yet.
I am Bob.
</pre>
=== 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
<BR>[[PHP]]
[[Funktioner]]
[[Funktionsreferens]]
[[Databas-tillägg]]
<HR>
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/
<BR><BR>Tack till [https://datorhjalp.se/huddinge  Datorhjälp Huddinge] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.
[[Kategori:Php]]
[[Kategori:Databas-tillägg]]

Nuvarande version från 23 december 2024 kl. 07.56