Source for file mysql.dbconnection.php

Documentation is available at mysql.dbconnection.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db_driver
  5. @author     Croes Gérald, Laurent Jouanneau
  6. @contributor Laurent Jouanneau
  7. @contributor Sylvain de Vathaire
  8. @copyright  2001-2005 CopixTeam, 2005-2007 Laurent Jouanneau
  9. *  This class was get originally from the Copix project (CopixDbConnectionMysql, Copix 2.3dev20050901, http://www.copix.org)
  10. *  Few lines of code are still copyrighted 2001-2005 CopixTeam (LGPL licence).
  11. *  Initial authors of this Copix class are Gerald Croes and Laurent Jouanneau,
  12. *  and this class was adapted for Jelix by Laurent Jouanneau
  13. *
  14. @link      http://www.jelix.org
  15. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  16. */
  17.  
  18. /**
  19.  *
  20.  * @package    jelix
  21.  * @subpackage db_driver
  22.  */
  23. class mysqlDbConnection extends jDbConnection {
  24.  
  25.    protected $_charsets =array'UTF-8'=>'utf8''ISO-8859-1'=>'latin1');
  26.  
  27.    function __construct($profil){
  28.       // à cause du @, on est obligé de tester l'existence de mysql, sinon en cas d'absence
  29.       // on a droit à un arret sans erreur 
  30.       if(!function_exists('mysql_connect')){
  31.          throw new jException('jelix~db.error.nofunction','mysql');
  32.       }
  33.       parent::__construct($profil);
  34.    }
  35.  
  36.    /**
  37.    * begin a transaction
  38.    */
  39.    public function beginTransaction (){
  40.       $this->_doExec ('SET AUTOCOMMIT=0');
  41.       $this->_doExec ('BEGIN');
  42.    }
  43.  
  44.    /**
  45.    * Commit since the last begin
  46.    */
  47.    public function commit (){
  48.       $this->_doExec ('COMMIT');
  49.       $this->_doExec ('SET AUTOCOMMIT=1');
  50.    }
  51.  
  52.    /**
  53.    * Rollback since the last BEGIN
  54.    */
  55.    public function rollback (){
  56.       $this->_doExec ('ROLLBACK');
  57.       $this->_doExec ('SET AUTOCOMMIT=1');
  58.    }
  59.  
  60.    /**
  61.    *
  62.    */
  63.    public function prepare ($query){
  64.        throw new jException('jelix~db.error.feature.unsupported'array('mysql','prepare'));
  65.    }
  66.  
  67.    public function errorInfo(){
  68.       return array'HY000' ,mysql_errno($this->_connection)mysql_error($this->_connection));
  69.    }
  70.  
  71.    public function errorCode(){
  72.       return mysql_errno($this->_connection);
  73.    }
  74.  
  75.    protected function _connect (){
  76.       $funcconnect($this->profil['persistent']'mysql_pconnect':'mysql_connect');
  77.       if($cnx @$funcconnect ($this->profil['host']$this->profil['user']$this->profil['password'])){
  78.          if(isset($this->profil['force_encoding']&& $this->profil['force_encoding'== true
  79.             && isset($this->_charsets[$GLOBALS['gJConfig']->charset])){
  80.              mysql_query("SET NAMES '".$this->_charsets[$GLOBALS['gJConfig']->charset]."'"$cnx);
  81.          }
  82.          return $cnx;
  83.       }else{
  84.          throw new jException('jelix~db.error.connection',$this->profil['host']);
  85.       }
  86.    }
  87.  
  88.    protected function _disconnect (){
  89.       return mysql_close ($this->_connection);
  90.    }
  91.  
  92.  
  93.    protected function _doQuery ($query){
  94.        // ici et non lors du connect, pour le cas où il y a plusieurs connexion active
  95.       if(!mysql_select_db ($this->profil['database']$this->_connection)){
  96.           if(mysql_errno($this->_connection))
  97.               throw new jException('jelix~db.error.database.unknow',$this->profil['database']);
  98.           else
  99.               throw new jException('jelix~db.error.connection.closed',$this->profil['name']);
  100.       }
  101.  
  102.       if ($qI mysql_query ($query$this->_connection)){
  103.          return new mysqlDbResultSet ($qI);
  104.       }else{
  105.          throw new jException('jelix~db.error.query.bad',  mysql_error($this->_connection).'('.$query.')');
  106.       }
  107.    }
  108.  
  109.    protected function _doExec($query){
  110.       if(!mysql_select_db ($this->profil['database']$this->_connection))
  111.          throw new jException('jelix~db.error.database.unknow',$this->profil['database']);
  112.  
  113.       if ($qI mysql_query ($query$this->_connection)){
  114.          return mysql_affected_rows($this->_connection);
  115.       }else{
  116.          throw new jException('jelix~db.error.query.bad',  mysql_error($this->_connection).'('.$query.')');
  117.       }
  118.    }
  119.  
  120.    protected function _doLimitQuery ($queryString$offset$number){
  121.      $queryString.= ' LIMIT '.$offset.','.$number;
  122.      $result $this->_doQuery($queryString);
  123.      return $result;
  124.    }
  125.  
  126.  
  127.    public function lastInsertId($fromSequence=''){// on n'a pas besoin de l'argument pour mysql
  128.       return mysql_insert_id ($this->_connection);
  129.    }
  130.  
  131.    /**
  132.    * tell mysql to be autocommit or not
  133.    * @param boolean state the state of the autocommit value
  134.    * @return void 
  135.    */
  136.    protected function _autoCommitNotify ($state){
  137.       $this->query ('SET AUTOCOMMIT='.$state '1' '0');
  138.    }
  139.  
  140.    /**
  141.     * renvoi une chaine avec les caractères spéciaux échappés
  142.     * @access private
  143.     */
  144.    protected function _quote($text){
  145.       return mysql_real_escape_string($text,  $this->_connection );
  146.    }
  147.  
  148. }
  149. ?>

Documentation generated on Wed, 07 Sep 2011 13:48:23 +0200 by phpDocumentor 1.4.3