Source for file sqlite3.dbresultset.php

Documentation is available at sqlite3.dbresultset.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db_driver
  5. @author     Loic Mathaud
  6. @contributor Laurent Jouanneau
  7. @copyright  2006 Loic Mathaud, 2008-2012 Laurent Jouanneau
  8. @link      http://www.jelix.org
  9. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10. */
  11.  
  12. /**
  13.  *
  14.  * Couche d'encapsulation des resultset sqlite.
  15.  * @package    jelix
  16.  * @subpackage db_driver
  17.  */
  18. class sqlite3DbResultSet extends jDbResultSet {
  19.  
  20.     /**
  21.      * number of rows
  22.      */
  23.     protected $numRows = 0;
  24.  
  25.     /**
  26.      * when reaching the end of a result set, sqlite3 api do a rewind
  27.      * we don't want this behavior, to mimic the behavior of other drivers
  28.      * this property indicates that we reached the end.
  29.      */
  30.     protected $ended = false;
  31.  
  32.     /**
  33.      * contains all unreaded records when
  34.      * rowCount() have been called
  35.      */
  36.     protected $buffer = array();
  37.  
  38.     protected function _fetch ({
  39.         if (count($this->buffer)) {
  40.             return array_shift($this->buffer);
  41.         }
  42.         if ($this->ended{
  43.             return false;
  44.         }
  45.         $res $this->_idResult->fetchArray(SQLITE3_ASSOC);
  46.         if ($res === false{
  47.             $this->ended = true;
  48.             return false;
  49.         }
  50.         $this->numRows++;
  51.         return (object)$res;
  52.     }
  53.  
  54.     protected function _free ({
  55.         $this->numRows = 0;
  56.         $this->buffer = array();
  57.         $this->ended = false;
  58.         $this->_idResult->finalize();
  59.     }
  60.  
  61.     protected function _rewind ({
  62.         $this->numRows = 0;
  63.         $this->buffer = array();
  64.         $this->ended = false;
  65.         return $this->_idResult->reset();
  66.     }
  67.  
  68.     public function rowCount({
  69.         // the mysqlite3 api doesn't provide a numrows property like any other
  70.         // database. The only way to now the number of rows, is to
  71.         // fetch all rows :-/
  72.         // let's store it into a buffer
  73.         if ($this->ended)
  74.             return $this->numRows;
  75.  
  76.         $res $this->_idResult->fetchArray(SQLITE3_ASSOC);
  77.         if ($res !== false{
  78.             while($res !== false{
  79.                 $this->buffer[= (object)$res;
  80.                 $res $this->_idResult->fetchArray(SQLITE3_ASSOC);
  81.             }
  82.             $this->numRows += count($this->buffer);
  83.         }
  84.         $this->ended = true;
  85.         return $this->numRows;
  86.     }
  87.  
  88.     public function bindColumn ($column&$param $type=null)
  89.       {throw new jException('jelix~db.error.feature.unsupported'array('sqlite3','bindColumn'))}
  90.     public function bindParam($parameter&$variable $data_type =null$length=null,  $driver_options=null)
  91.       {throw new jException('jelix~db.error.feature.unsupported'array('sqlite3','bindParam'))}
  92.     public function bindValue($parameter$value$data_type)
  93.       {throw new jException('jelix~db.error.feature.unsupported'array('sqlite3','bindValue'))}
  94.     public function columnCount()
  95.       return $this->_idResult->numColumns()}
  96.     public function execute($parameters=null)
  97.       {throw new jException('jelix~db.error.feature.unsupported'array('sqlite3','bindColumn'))}
  98. }

Documentation generated on Wed, 04 Jan 2017 22:59:12 +0100 by phpDocumentor 1.4.3