PDOStatement::fetchAll(): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
(En mellanliggande sidversion av samma användare visas inte)
Rad 1: Rad 1:
== PDOStatement::fetchAll ==
'''(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)'''
'''(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)'''


Rad 10: Rad 11:
public PDOStatement::fetchAll(int $mode = PDO::FETCH_FUNC, callable $callback): array
public PDOStatement::fetchAll(int $mode = PDO::FETCH_FUNC, callable $callback): array
</pre>
</pre>
Hämtar alla återstående rader från resultatuppsättningen kopplad till ett PDOStatement-objekt. Innehållet i den returnerade arrayen styrs av parametern '''mode''', enligt samma principer som i [[PDOStatement::fetch]].
=== Parametrar ===
; mode 
: Styr innehållet i den returnerade arrayen. Standardvärdet är inställt på '''PDO::ATTR_DEFAULT_FETCH_MODE''' (som som standard är '''PDO::FETCH_BOTH''').
:* '''PDO::FETCH_COLUMN:''' Returnerar en array med värden från en enda kolumn i resultatuppsättningen. Kolumnen anges med parametern ''column''. 
:* '''PDO::FETCH_UNIQUE:''' Indexerar den resulterande arrayen med värdet från en viss kolumn. Kolumnen måste innehålla unika värden, annars förloras data. 
:* '''PDO::FETCH_GROUP:''' Grupperar resultatet som en 3-dimensionell array där den första kolumnen används som index. 
:* '''PDO::FETCH_GROUP | PDO::FETCH_COLUMN:''' Grupperar resultatet som en 2-dimensionell array baserat på den första kolumnen. Arrayelementens värden är listor med motsvarande värden från den andra kolumnen.
; column 
: Används med '''PDO::FETCH_COLUMN'''. Anger vilken 0-indexerad kolumn som ska hämtas.
; class 
: Används med '''PDO::FETCH_CLASS'''. Returnerar instanser av den angivna klassen och mappar kolumnvärden till egenskaper i klassen.
; constructorArgs 
: Används med '''PDO::FETCH_CLASS'''. Anger argument för klassens konstruktor.
; callback 
: Används med '''PDO::FETCH_FUNC'''. Returnerar resultatet av att anropa en angiven funktion där varje rads kolumnvärden används som argument.
=== Returvärden ===
PDOStatement::fetchAll() returnerar en array som innehåller alla återstående rader i resultatet. Varje rad representeras som en array med kolumnvärden eller som ett objekt med egenskaper motsvarande kolumnnamnen. Om inga rader finns returneras en tom array.
'''Varning:''' 
Att använda denna metod för att hämta stora resultatmängder kan leda till hög resursförbrukning. Överväg att låta databasen filtrera och begränsa resultatet genom SQL-satser som WHERE och ORDER BY innan du hämtar och bearbetar data i PHP.
=== 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'''.
=== Ändringslogg ===
; Version 
: '''8.0.0''' Denna metod returnerar alltid en array. Tidigare kunde den returnera ''false'' vid misslyckande.
=== Exempel ===
==== Exempel 1: Hämta alla återstående rader ====
<pre>
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Hämta alla återstående rader */
print "Hämta alla återstående rader:\n";
$result = $sth->fetchAll();
print_r($result);
?>
</pre>
Möjlig utdata:
<pre>
Hämta alla återstående rader:
Array
(
    [0] => Array
        (
            [name] => apple
            [0] => apple
            [colour] => red
            [1] => red
        )
    [1] => Array
        (
            [name] => pear
            [0] => pear
            [colour] => green
            [1] => green
        )
    [2] => Array
        (
            [name] => watermelon
            [0] => watermelon
            [colour] => pink
            [1] => pink
        )
)
</pre>
==== Exempel 2: Hämta värden från en enda kolumn ====
<pre>
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Hämta alla värden från den första kolumnen */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>
</pre>
Möjlig utdata:
<pre>
array(3) {
  [0] => string(5) "apple"
  [1] => string(4) "pear"
  [2] => string(10) "watermelon"
}
</pre>
==== Exempel 3: Gruppera värden efter en kolumn ====
<pre>
<?php
$insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$insert->execute(array('apple', 'green'));
$insert->execute(array('pear', 'yellow'));
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Gruppera värden efter första kolumnen */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>
</pre>
Möjlig utdata:
<pre>
array(3) {
  ["apple"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(3) "red"
  }
  ["pear"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(6) "yellow"
  }
  ["watermelon"]=>
  array(1) {
    [0]=>
    string(5) "pink"
  }
}
</pre>
==== Exempel 4: Instansiera en klass för varje rad ====
<pre>
<?php
class fruit {
    public $name;
    public $colour;
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>
</pre>
Möjlig utdata:
<pre>
array(3) {
  [0]=>
  object(fruit)#1 (2) {
    ["name"]=>
    string(5) "apple"
    ["colour"]=>
    string(5) "green"
  }
  [1]=>
  object(fruit)#2 (2) {
    ["name"]=>
    string(4) "pear"
    ["colour"]=>
    string(6) "yellow"
  }
  [2]=>
  object(fruit)#3 (2) {
    ["name"]=>
    string(10) "watermelon"
    ["colour"]=>
    string(4) "pink"
  }
}
</pre>
==== Exempel 5: Anropa en funktion för varje rad ====
<pre>
<?php
function fruit($name, $colour) {
    return "{$name}: {$colour}";
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>
</pre>
Möjlig utdata:
<pre>
array(3) {
  [0]=>
  string(12) "apple: green"
  [1]=>
  string(12) "pear: yellow"
  [2]=>
  string(16) "watermelon: pink"
}
</pre>
=== Se även ===
* [[PDO::query()]] - Förbereder och exekverar ett SQL-uttryck utan platshållare 
* [[PDOStatement::fetch()]] - Hämtar nästa rad från en resultatuppsättning 
* [[PDOStatement::fetchColumn()]] - Returnerar en enstaka kolumn från nästa rad i en resultatuppsättning 
* [[PDO::prepare()]] - Förbereder ett uttryck för exekvering och returnerar ett statement-objekt 
* [[PDOStatement::setFetchMode()]] - Ställer in standardhämtläget för detta statement


= Sidslut =
= Sidslut =

Nuvarande version från 23 december 2024 kl. 07.55

PDOStatement::fetchAll

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::fetchAll — Hämtar de återstående raderna från en resultatuppsättning

Beskrivning

public PDOStatement::fetchAll(int $mode = PDO::FETCH_DEFAULT): array
public PDOStatement::fetchAll(int $mode = PDO::FETCH_COLUMN, int $column): array
public PDOStatement::fetchAll(int $mode = PDO::FETCH_CLASS, string $class, ?array $constructorArgs): array
public PDOStatement::fetchAll(int $mode = PDO::FETCH_FUNC, callable $callback): array

Hämtar alla återstående rader från resultatuppsättningen kopplad till ett PDOStatement-objekt. Innehållet i den returnerade arrayen styrs av parametern mode, enligt samma principer som i PDOStatement::fetch.

Parametrar

mode
Styr innehållet i den returnerade arrayen. Standardvärdet är inställt på PDO::ATTR_DEFAULT_FETCH_MODE (som som standard är PDO::FETCH_BOTH).
  • PDO::FETCH_COLUMN: Returnerar en array med värden från en enda kolumn i resultatuppsättningen. Kolumnen anges med parametern column.
  • PDO::FETCH_UNIQUE: Indexerar den resulterande arrayen med värdet från en viss kolumn. Kolumnen måste innehålla unika värden, annars förloras data.
  • PDO::FETCH_GROUP: Grupperar resultatet som en 3-dimensionell array där den första kolumnen används som index.
  • PDO::FETCH_GROUP | PDO::FETCH_COLUMN: Grupperar resultatet som en 2-dimensionell array baserat på den första kolumnen. Arrayelementens värden är listor med motsvarande värden från den andra kolumnen.
column
Används med PDO::FETCH_COLUMN. Anger vilken 0-indexerad kolumn som ska hämtas.
class
Används med PDO::FETCH_CLASS. Returnerar instanser av den angivna klassen och mappar kolumnvärden till egenskaper i klassen.
constructorArgs
Används med PDO::FETCH_CLASS. Anger argument för klassens konstruktor.
callback
Används med PDO::FETCH_FUNC. Returnerar resultatet av att anropa en angiven funktion där varje rads kolumnvärden används som argument.

Returvärden

PDOStatement::fetchAll() returnerar en array som innehåller alla återstående rader i resultatet. Varje rad representeras som en array med kolumnvärden eller som ett objekt med egenskaper motsvarande kolumnnamnen. Om inga rader finns returneras en tom array.

Varning: Att använda denna metod för att hämta stora resultatmängder kan leda till hög resursförbrukning. Överväg att låta databasen filtrera och begränsa resultatet genom SQL-satser som WHERE och ORDER BY innan du hämtar och bearbetar data i PHP.

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.

Ändringslogg

Version
8.0.0 Denna metod returnerar alltid en array. Tidigare kunde den returnera false vid misslyckande.

Exempel

Exempel 1: Hämta alla återstående rader

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Hämta alla återstående rader */
print "Hämta alla återstående rader:\n";
$result = $sth->fetchAll();
print_r($result);
?>

Möjlig utdata:

Hämta alla återstående rader:
Array
(
    [0] => Array
        (
            [name] => apple
            [0] => apple
            [colour] => red
            [1] => red
        )

    [1] => Array
        (
            [name] => pear
            [0] => pear
            [colour] => green
            [1] => green
        )

    [2] => Array
        (
            [name] => watermelon
            [0] => watermelon
            [colour] => pink
            [1] => pink
        )
)

Exempel 2: Hämta värden från en enda kolumn

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Hämta alla värden från den första kolumnen */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>

Möjlig utdata:

array(3) {
  [0] => string(5) "apple"
  [1] => string(4) "pear"
  [2] => string(10) "watermelon"
}

Exempel 3: Gruppera värden efter en kolumn

<?php
$insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$insert->execute(array('apple', 'green'));
$insert->execute(array('pear', 'yellow'));

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Gruppera värden efter första kolumnen */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>

Möjlig utdata:

array(3) {
  ["apple"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(3) "red"
  }
  ["pear"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(6) "yellow"
  }
  ["watermelon"]=>
  array(1) {
    [0]=>
    string(5) "pink"
  }
}

Exempel 4: Instansiera en klass för varje rad

<?php
class fruit {
    public $name;
    public $colour;
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>

Möjlig utdata:

array(3) {
  [0]=>
  object(fruit)#1 (2) {
    ["name"]=>
    string(5) "apple"
    ["colour"]=>
    string(5) "green"
  }
  [1]=>
  object(fruit)#2 (2) {
    ["name"]=>
    string(4) "pear"
    ["colour"]=>
    string(6) "yellow"
  }
  [2]=>
  object(fruit)#3 (2) {
    ["name"]=>
    string(10) "watermelon"
    ["colour"]=>
    string(4) "pink"
  }
}

Exempel 5: Anropa en funktion för varje rad

<?php
function fruit($name, $colour) {
    return "{$name}: {$colour}";
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>

Möjlig utdata:

array(3) {
  [0]=>
  string(12) "apple: green"
  [1]=>
  string(12) "pear: yellow"
  [2]=>
  string(16) "watermelon: pink"
}

Se även

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/pdostatement.fetchall.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.