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     GĂ©rald Croes, Laurent Jouanneau
  6. @contributor Laurent Jouanneau
  7. @contributor Sylvain de Vathaire, Julien Issler
  8. @copyright  2001-2005 CopixTeam, 2005-2010 Laurent Jouanneau
  9. @copyright  2009 Julien Issler
  10. *  This class was get originally from the Copix project (CopixDbConnectionMysql, Copix 2.3dev20050901, http://www.copix.org)
  11. *  Few lines of code are still copyrighted 2001-2005 CopixTeam (LGPL licence).
  12. *  Initial authors of this Copix class are Gerald Croes and Laurent Jouanneau,
  13. *  and this class was adapted for Jelix by Laurent Jouanneau
  14. *
  15. @link      http://www.jelix.org
  16. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  17. */
  18. require_once(dirname(__FILE__).'/mysql.dbresultset.php');
  19.  
  20. /**
  21.  *
  22.  * @package    jelix
  23.  * @subpackage db_driver
  24.  */
  25. class mysqlDbConnection extends jDbConnection {
  26.  
  27.     protected $_charsets =array'UTF-8'=>'utf8''ISO-8859-1'=>'latin1');
  28.  
  29.     function __construct($profile){
  30.         // because of the @, we need to test mysl existance, else there would be 
  31.         // a stop without error
  32.         if(!function_exists('mysql_connect')){
  33.             throw new jException('jelix~db.error.nofunction','mysql');
  34.         }
  35.         parent::__construct($profile);
  36.     }
  37.  
  38.     /**
  39.      * Enclose the field name
  40.      * @param string $fieldName the field name
  41.      * @return string the enclosed field name
  42.      * @since 1.1.1
  43.      */
  44.     public function encloseName($fieldName){
  45.         return '`'.$fieldName.'`';
  46.     }
  47.  
  48.     /**
  49.     * Begin a transaction
  50.     */
  51.     public function beginTransaction (){
  52.         $this->_doExec ('SET AUTOCOMMIT=0');
  53.         $this->_doExec ('BEGIN');
  54.     }
  55.  
  56.     /**
  57.     * Commit since the last begin
  58.     */
  59.     public function commit (){
  60.         $this->_doExec ('COMMIT');
  61.         $this->_doExec ('SET AUTOCOMMIT=1');
  62.     }
  63.  
  64.     /**
  65.     * Rollback since the last BEGIN
  66.     */
  67.     public function rollback (){
  68.         $this->_doExec ('ROLLBACK');
  69.         $this->_doExec ('SET AUTOCOMMIT=1');
  70.     }
  71.  
  72.     /**
  73.     *
  74.     */
  75.     public function prepare ($query){
  76.         throw new jException('jelix~db.error.feature.unsupported'array('mysql','prepare'));
  77.     }
  78.  
  79.     public function errorInfo(){
  80.         return array'HY000' ,mysql_errno($this->_connection)mysql_error($this->_connection));
  81.     }
  82.  
  83.     public function errorCode(){
  84.        return mysql_errno($this->_connection);
  85.     }
  86.  
  87.     protected function _connect (){
  88.         $funcconnect($this->profile['persistent']'mysql_pconnect':'mysql_connect');
  89.         if($cnx @$funcconnect ($this->profile['host']$this->profile['user']$this->profile['password'])){
  90.             if(isset($this->profile['force_encoding']&& $this->profile['force_encoding'== true
  91.               && isset($this->_charsets[$GLOBALS['gJConfig']->charset])){
  92.                 mysql_query("SET NAMES '".$this->_charsets[$GLOBALS['gJConfig']->charset]."'"$cnx);
  93.             }
  94.             return $cnx;
  95.         }else{
  96.             throw new jException('jelix~db.error.connection',$this->profile['host']);
  97.         }
  98.     }
  99.  
  100.     protected function _disconnect (){
  101.         return mysql_close ($this->_connection);
  102.     }
  103.  
  104.  
  105.     protected function _doQuery ($query){
  106.         // here and not during the connect, in case there would be multiple active connections
  107.         if(!mysql_select_db ($this->profile['database']$this->_connection)){
  108.             if(mysql_errno($this->_connection))
  109.                 throw new jException('jelix~db.error.database.unknown',$this->profile['database']);
  110.             else
  111.                 throw new jException('jelix~db.error.connection.closed',$this->profile['name']);
  112.         }
  113.  
  114.         if ($qI mysql_query ($query$this->_connection)){
  115.             return new mysqlDbResultSet ($qI);
  116.         }else{
  117.             throw new jException('jelix~db.error.query.bad',  mysql_error($this->_connection).'('.$query.')');
  118.         }
  119.     }
  120.  
  121.     protected function _doExec($query){
  122.         if(!mysql_select_db ($this->profile['database']$this->_connection))
  123.             throw new jException('jelix~db.error.database.unknown',$this->profile['database']);
  124.  
  125.         if ($qI mysql_query ($query$this->_connection)){
  126.             return mysql_affected_rows($this->_connection);
  127.         }else{
  128.             throw new jException('jelix~db.error.query.bad',  mysql_error($this->_connection).'('.$query.')');
  129.         }
  130.     }
  131.  
  132.     protected function _doLimitQuery ($queryString$offset$number){
  133.         $queryString.= ' LIMIT '.$offset.','.$number;
  134.         $this->lastQuery = $queryString;
  135.         $result $this->_doQuery($queryString);
  136.         return $result;
  137.     }
  138.  
  139.  
  140.     public function lastInsertId($fromSequence=''){// on n'a pas besoin de l'argument pour mysql
  141.         return mysql_insert_id ($this->_connection);
  142.     }
  143.  
  144.     /**
  145.     * tell mysql to be autocommit or not
  146.     * @param boolean $state the state of the autocommit value
  147.     * @return void 
  148.     */
  149.     protected function _autoCommitNotify ($state){
  150.         $this->query ('SET AUTOCOMMIT='.($state '1' '0'));
  151.     }
  152.  
  153.     /**
  154.      * @return string escaped text or binary string
  155.      */
  156.     protected function _quote($text$binary{
  157.         return mysql_real_escape_string($text$this->_connection);
  158.     }
  159.  
  160.     /**
  161.      *
  162.      * @param integer $id the attribut id
  163.      * @return string the attribute value
  164.      * @see PDO::getAttribute()
  165.      */
  166.     public function getAttribute($id{
  167.         switch($id{
  168.             case self::ATTR_CLIENT_VERSION:
  169.                 return mysql_get_client_info();
  170.             case self::ATTR_SERVER_VERSION:
  171.                 return mysql_get_server_info($this->_connection);
  172.                 break;
  173.             case self::ATTR_SERVER_INFO:
  174.                 return mysql_get_host_info($this->_connection);
  175.         }
  176.         return "";
  177.     }
  178.  
  179.     /**
  180.      * 
  181.      * @param integer $id the attribut id
  182.      * @param string $value the attribute value
  183.      * @see PDO::setAttribute()
  184.      */
  185.     public function setAttribute($id$value{
  186.     }
  187.  
  188. }

Documentation generated on Wed, 24 Sep 2014 22:03:44 +0200 by phpDocumentor 1.4.3