Source for file mysqli.dbconnection.php
Documentation is available at mysqli.dbconnection.php
- <?php
- /**
- * @package jelix
- * @subpackage db_driver
- * @author Gérald Croes, Laurent Jouanneau
- * @contributor Laurent Jouanneau
- * @contributor Sylvain de Vathaire, Julien Issler
- * @contributor Florian Lonqueu-Brochard
- * @copyright 2001-2005 CopixTeam, 2005-2012 Laurent Jouanneau
- * @copyright 2009 Julien Issler
- * @copyright 2012 Florian Lonqueu-Brochard
- * @link http://www.jelix.org
- * @licence http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
- */
- require_once(dirname(__FILE__).'/mysqli.dbresultset.php');
- require_once(dirname(__FILE__).'/mysqli.dbstatement.php');
-
- /**
- *
- * @package jelix
- * @subpackage db_driver
- */
- class mysqliDbConnection extends jDbConnection {
-
- protected $_charsets =array( 'UTF-8'=>'utf8', 'ISO-8859-1'=>'latin1');
- private $_usesMysqlnd = null;
-
- function __construct($profile){
- // à cause du @, on est obligé de tester l'existence de mysql, sinon en cas d'absence
- // on a droit à un arret sans erreur
- if(!function_exists('mysqli_connect')){
- throw new jException('jelix~db.error.nofunction','mysql');
- }
- parent::__construct($profile);
-
- $this->dbms = 'mysql';
- }
-
- /**
- * enclose the field name
- * @param string $fieldName the field name
- * @return string the enclosed field name
- * @since 1.1.1
- */
- public function encloseName($fieldName){
- return '`'.$fieldName.'`';
- }
-
- /**
- * begin a transaction
- */
- public function beginTransaction (){
- $this->_autoCommitNotify(false);
- }
-
- /**
- * Commit since the last begin
- */
- public function commit (){
- $this->_connection->commit();
- $this->_autoCommitNotify(true);
- }
-
- /**
- * Rollback since the last begin
- */
- public function rollback (){
- $this->_connection->rollback();
- $this->_autoCommitNotify(true);
- }
-
- /**
- *
- */
- public function prepare ($query){
- $res = $this->_connection->prepare($query);
- if( $this->_usesMysqlnd === null ) {
- if( is_callable( array($res, 'get_result') ) ) {
- $this->_usesMysqlnd = true;
- } else {
- $this->_usesMysqlnd = false;
- }
- }
- if($res){
- $rs= new mysqliDbStatement($res, $this->_usesMysqlnd);
- }else{
- throw new jException('jelix~db.error.query.bad', $this->_connection->error.'('.$query.')');
- }
- return $rs;
- }
-
- public function errorInfo(){
- return array( 'HY000' ,$this->_connection->errno, $this->_connection->error);
- }
-
- public function errorCode(){
- return $this->_connection->errno;
- }
-
- protected function _connect (){
- $host = ($this->profile['persistent']) ? 'p:'.$this->profile['host'] : $this->profile['host'];
- $cnx = @new mysqli ($host, $this->profile['user'], $this->profile['password'], $this->profile['database']);
- if ($cnx->connect_errno) {
- throw new jException('jelix~db.error.connection',$this->profile['host']);
- }
- else{
- if(isset($this->profile['force_encoding']) && $this->profile['force_encoding'] == true
- && isset($this->_charsets[jApp::config()->charset])){
- $cnx->set_charset($this->_charsets[jApp::config()->charset]);
- }
- return $cnx;
- }
- }
-
- protected function _disconnect (){
- return $this->_connection->close();
- }
-
-
- protected function _doQuery ($query){
- if ($qI = $this->_connection->query($query)){
- return new mysqliDbResultSet ($qI);
- }else{
- throw new jException('jelix~db.error.query.bad', $this->_connection->error.'('.$query.')');
- }
- }
-
- protected function _doExec($query){
- if ($qI = $this->_connection->query($query)){
- return $this->_connection->affected_rows;
- }else{
- throw new jException('jelix~db.error.query.bad', $this->_connection->error.'('.$query.')');
- }
- }
-
- protected function _doLimitQuery ($queryString, $offset, $number){
- $queryString.= ' LIMIT '.$offset.','.$number;
- $this->lastQuery = $queryString;
- $result = $this->_doQuery($queryString);
- return $result;
- }
-
-
- public function lastInsertId($fromSequence=''){// on n'a pas besoin de l'argument pour mysqli
- return $this->_connection->insert_id;
- }
-
- /**
- * tell mysql to be autocommit or not
- * @param boolean $state the state of the autocommit value
- * @return void
- */
- protected function _autoCommitNotify ($state){
- $this->_connection->autocommit($state);
- }
-
- /**
- * @return string escaped text or binary string
- */
- protected function _quote($text, $binary) {
- return $this->_connection->real_escape_string($text);
- }
-
- /**
- *
- * @param integer $id the attribut id
- * @return string the attribute value
- * @see PDO::getAttribute()
- */
- public function getAttribute($id) {
- switch($id) {
- case self::ATTR_CLIENT_VERSION:
- return $this->_connection->get_client_info();
- case self::ATTR_SERVER_VERSION:
- return $this->_connection->server_info;
- break;
- case self::ATTR_SERVER_INFO:
- return $this->_connection->host_info;
- }
- return "";
- }
-
- /**
- *
- * @param integer $id the attribut id
- * @param string $value the attribute value
- * @see PDO::setAttribute()
- */
- public function setAttribute($id, $value) {
- }
-
-
- /**
- * Execute several sql queries
- */
- public function execMulti($queries){
- $query_res = $this->_connection->multi_query($queries);
- while($this->_connection->more_results()){
- $this->_connection->next_result();
- if($discard = $this->_connection->store_result()){
- $discard->free();
- }
- }
- return $query_res;
- }
-
- }
Documentation generated on Mon, 26 Oct 2015 21:57:45 +0100 by phpDocumentor 1.4.3