PHP Unconference Europe 2015

SQLite3Result::fetchArray

(PHP 5 >= 5.3.0)

SQLite3Result::fetchArray Récupère un jeu de résultats sous la forme d'un tableau associatif

Description

public array SQLite3Result::fetchArray ([ int $mode = SQLITE3_BOTH ] )

Récupère un jeu de résultats sous la forme d'un tableau associatif ou indexé numériquement, ou les deux. Par défaut, ce sera les deux.

Liste de paramètres

mode

Contrôle la façon dont la prochaine ligne doit être retournée à la fonction appelante. Cette valeur peut être SQLITE3_ASSOC, SQLITE3_NUM, ou SQLITE3_BOTH.

  • SQLITE3_ASSOC : Retourne un tableau indexé par le nom de la colonne, tel que retourné dans le jeu de résultats correspondant.

  • SQLITE3_NUM : Retourne un tableau indexé par le numéro de la colonne, tel que retourné dans le jeu de résultats, en commençant par la colonne 0.

  • SQLITE3_BOTH : Retourne un tableau indexé par le nom et le numéro de la colonne, tel que retourné par le jeu de résultats, en commençant par la colonne 0.

Valeurs de retour

Retourne une ligne du jeu de résultats, sous la forme d'un tableau associatif, ou sous la forme d'un tableau indexé, ou les deux. Retourne FALSE s'il n'y a plus de lignes.

add a note add a note

User Contributed Notes 2 notes

up
1
Jason
27 days ago
Would just like to point out for clarification that each call to fetchArray() returns the next result from SQLite3Result in an array, until there are no more results, whereupon the next fetchArray() call will return false.

HOWEVER an additional call of fetchArray() at this point will reset back to the beginning of the result set and once again return the first result. This does not seem to explicitly documented, and caused me my own fair share of headaches for a while until I figured it out.

For example:

<?php
        $returned_set
= $database->query("select query or whatever");
       
       
//Lets say the query returned 3 results
        //Normally the following while loop would run 3 times then, as $result wouldn't be false until the fourth call to fetchArray()
       
while($result = $returned_set->fetchArray()) {
               
//HOWEVER HAVING AN ADDITIONAL CALL IN THE LOOP WILL CAUSE THE LOOP TO RUN AGAIN
               
$returned_set->fetchArray();
        }
?>

Basically, in the above code fetchArray will return:
1st call | 1st result from $returned_set (fetchArray() call from while condition)
2nd call | 2nd result  (fetchArray() call from while block)
3rd call | 3rd result  (fetchArray() call from while condition)
4th call |FALSE  (fetchArray() call from while block)
5th call | 1st result  (fetchArray() call from while condition)
....

This will cause (at least in this case) the while loop to run infinitely.
up
1
alan at synergymx dot com
4 years ago
To loop through a record set:

<?php
        $db
= new SQLite3('auth.sqlite');

       
$sql = "SELECT user_id, username, opt_status FROM tbl_user";

       
$result = $db->query($sql);//->fetchArray(SQLITE3_ASSOC);

       
$row = array();

       
$i = 0;

         while(
$res = $result->fetchArray(SQLITE3_ASSOC)){

             if(!isset(
$res['user_id'])) continue;

             
$row[$i]['user_id'] = $res['user_id'];
             
$row[$i]['username'] = $res['username'];
             
$row[$i]['opt_status'] = $res['opt_status'];

             
$i++;

          }

         
print_r($row);
?>
To Top