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
La classe SQLite3Result
(No version information available, might only be in SVN)
Introduction
Une classe qui représente les résultats d'une base de données SQLite 3.
Synopsis de la classe
SQLite3Result
{
/* Méthodes */
}Sommaire
- SQLite3Result::columnName — Retourne le nom d'une colonne
- SQLite3Result::columnType — Retourne le type d'une colonne
- SQLite3Result::fetchArray — Récupère un jeu de résultats sous la forme d'un tableau associatif
- SQLite3Result::finalize — Ferme un jeu de résultats
- SQLite3Result::numColumns — Retourne le nombre de colonnes du jeu de résultats
- SQLite3Result::reset — Repositionne le pointeur sur la première ligne du jeu de résultats
alan71-at-free-fr
28-Dec-2010 06:34
claudiu at virtuamagic dot com
08-Mar-2010 02:34
fetchArray() will return bool(false) in case of 0 rows.
jonscully at gmail dot com
30-Nov-2009 01: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
