Source for file mysqli.dbresultset.php

Documentation is available at mysqli.dbresultset.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db_driver
  5. @author     GĂ©rald Croes, Laurent Jouanneau
  6. @contributor Laurent Jouanneau
  7. @contributor Florian Lonqueu-Brochard
  8. @copyright  2001-2005 CopixTeam, 2005-2012 Laurent Jouanneau
  9. @copyright  2012 Florian Lonqueu-Brochard
  10. @link      http://www.jelix.org
  11. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  12. */
  13.  
  14. /**
  15.  * Object to fetch result, wrapping the underlaying result object of mysqli
  16.  * @package    jelix
  17.  * @subpackage db_driver
  18.  */
  19. class mysqliDbResultSet extends jDbResultSet {
  20.  
  21.     protected function  _fetch ({
  22.         if($this->_fetchMode == jDbConnection::FETCH_CLASS{
  23.             if ($this->_fetchModeCtoArgs)
  24.                 $ret =  $this->_idResult->fetch_object($this->_fetchModeParam$this->_fetchModeCtoArgs);
  25.             else
  26.                 $ret =  $this->_idResult->fetch_object($this->_fetchModeParam);
  27.         }else{
  28.             $ret =  $this->_idResult->fetch_object();
  29.         }
  30.         return $ret;
  31.     }
  32.  
  33.     protected function _free (){
  34.         //free_result may lead to a warning if close() has been called before by dbconnection's _disconnect()
  35.         return @$this->_idResult->free_result();
  36.     }
  37.  
  38.     protected function _rewind (){
  39.         return @$this->_idResult->data_seek(0);
  40.     }
  41.  
  42.     public function rowCount(){
  43.         return $this->_idResult->num_rows;
  44.     }
  45.  
  46.     public function columnCount()
  47.         return $this->_idResult->field_count
  48.     }
  49.  
  50.     public function bindColumn($column&$param $type=null )
  51.       {throw new jException('jelix~db.error.feature.unsupported'array('mysql','bindColumn'))}
  52.     public function bindValue($parameter$value$data_type)
  53.       {throw new jException('jelix~db.error.feature.unsupported'array('mysql','bindValue'))}
  54.     public function bindParam($parameter&$variable $data_type =null$length=null,  $driver_options=null)
  55.       {throw new jException('jelix~db.error.feature.unsupported'array('mysql','bindParam'))}
  56.     public function execute($parameters=null)
  57.       {throw new jException('jelix~db.error.feature.unsupported'array('mysql','execute'))}
  58. }
  59.  
  60.  
  61. /**
  62.  * Object to fetch result, wrapping a statement object of mysqli,
  63.  * for installation where mysqlnd is not used
  64.  * @package    jelix
  65.  * @subpackage db_driver
  66.  */
  67. class mysqliDbStmtResultSet extends mysqliDbResultSet {
  68.  
  69.     protected $resultObject = null;
  70.  
  71.     function __construct ($result{
  72.         parent::__construct($result);
  73.         //this call to store_result() will buffer all results but is necessary for num_rows to have
  74.         //its real value and thus for dbresultset's ->rowCount() to work fine :
  75.         $result->store_result();
  76.  
  77.         // we have a statement, so no fetch_object method
  78.         // so we will create results object. We need to bind result.
  79.         $meta $result->result_metadata();
  80.  
  81.         $this->resultObject = new stdClass();
  82.         
  83.         while($field $meta->fetch_field()) {
  84.             $this->resultObject->{$field->namenull;
  85.             $variables[$this->resultObject->{$field->name}// pass by reference
  86.         }
  87.         call_user_func_array(array($result'bind_result')$variables);
  88.         $meta->close();
  89.     }
  90.  
  91.     protected function  _fetch ({
  92.         if (!$this->_idResult->fetch())
  93.             return false;
  94.         $result clone $this->resultObject;
  95.         return $result;
  96.     }
  97.  
  98. }

Documentation generated on Mon, 26 Oct 2015 21:57:48 +0100 by phpDocumentor 1.4.3