SQLite3Result::columnName> <SQLite3Stmt::reset
Last updated: Fri, 24 Feb 2012

The SQLite3Result class

(No version information available, might only be in SVN)

Introdução

A class that handles result sets for the SQLite 3 extension.

Sinopse da classe

SQLite3Result {
/* Métodos */
public string columnName ( int $column_number )
public int columnType ( int $column_number )
public array fetchArray ([ int $mode = SQLITE3_BOTH ] )
public bool finalize ( void )
public int numColumns ( void )
public bool reset ( void )
}

Índice



SQLite3Result::columnName> <SQLite3Stmt::reset
Last updated: Fri, 24 Feb 2012
 
User Contributed Notes
SQLite3Result
alan71-at-free-fr
28-Dec-2010 04:34
Here's a snippet that might help you to write a fetchObject function that is also missing:

<?php

function fetchObject($sqlite3result, $objectType = NULL) {
   
$array = $sqlite3result->fetchArray();

    if(
is_null($objectType)) {
       
$object = new stdClass();
    } else {
       
// does not call this class' constructor
       
$object = unserialize(sprintf('O:%d:"%s":0:{}', strlen($objectType), $objectType));
    }
   
   
$reflector = new ReflectionObject($object);
    for(
$i = 0; $i < $sqlite3result->numColumns(); $i++) {
       
$name = $sqlite3result->columnName($i);
       
$value = $array[$name];
       
        try {
           
$attribute = $reflector->getProperty($name);
           
           
$attribute->setAccessible(TRUE);
           
$attribute->setValue($object, $value);
        } catch (
ReflectionException $e) {
           
$object->$name = $value;
        }
    }
   
    return
$object;
}

?>

Heavily inspired of Bergmann's Object Freezer :
https://github.com/sebastianbergmann/php-object-freezer/blob/master/Object/Freezer.php
claudiu at virtuamagic dot com
07-Mar-2010 11:34
fetchArray() will return bool(false) in case of 0 rows.
jonscully at gmail dot com
29-Nov-2009 11:35
Since SQLite3Result::numRows is unavailable, use:

<?php
if ($res->numColumns() && $res->columnType(0) != SQLITE3_NULL) {
   
// have rows
} else {
   
// zero rows
}
?>

Because when there are zero rows:
* SQLite3Result::fetchArray will return '1'
* SQLite3Result::numColumns will return '1'
* Column type for column '0' will be SQLITE3_NULL

SQLite3Result::columnName> <SQLite3Stmt::reset
Last updated: Fri, 24 Feb 2012