PHP Classes

File: MySQL

Recommend this page to a friend!
  Classes of Sandro Alves Peres   Utils   MySQL   Download  
File: MySQL
Role: Class source
Content type: text/plain
Description: Class MySQL
Class: Utils
Classes for accessing databases manipulating dates
Author: By
Last change: Improvement in transactions
Date: 11 years ago
Size: 11,323 bytes
 

Contents

Class file image Download
<?php /** Implemented by Sandro Alves Peres sandrinhodobanjo@yahoo.com.br -------------------------------------------- God makes us winners... */ /**************************************************************** * A variável abaixo armazena uma lista de conexões * que podem existir no sistema. Caso seja necessária * uma nova conexão, apenas adicione mais um chave ao array * com as propriedades da nova conexão. ****************************************************************/ $MySQLConnectionsAvailable = array ( "mvc" => array ( "host" => "localhost", "user" => "root", "password" => "", "database" => "mvc", "port" => 3306 ), "site" => array ( "host" => "192.168.0.22", "user" => "site", "password" => "", "database" => "site", "port" => 3306 ) ); class MySQL { private $connection = null; private $querySQL = NULL; private $charset = "latin1"; private $host = NULL; private $user = NULL; private $password = NULL; private $database = NULL; private $port = 3306; /** * Método construtor da classe * * @author Sandro Alves Peres * @access public * @return Void */ public function __construct( $strConnection = null ) { if( !isset($GLOBALS["MySQLConnectionsOpened"]) ) { $GLOBALS["MySQLConnectionsOpened"] = array(); } if( $strConnection != null ) { $this->setConnection( $strConnection ); } } /** * Configura qual será a conexão que será aberta * A lista de conexões está em $MySQLConnectionsAvailable * * @author Sandro Alves Peres * @access public * @param String $strName - Nome da Conexão * @return Void */ public function setConnection( $strName ) { global $MySQLConnectionsAvailable; if( !array_key_exists($strName, $MySQLConnectionsAvailable) ) { throw new OutOfBoundsException("Conexão não existe na configuração!"); } $this->connection = $strName; $this->host = $MySQLConnectionsAvailable[ $strName ]["host"]; $this->user = $MySQLConnectionsAvailable[ $strName ]["user"]; $this->password = $MySQLConnectionsAvailable[ $strName ]["password"]; $this->database = $MySQLConnectionsAvailable[ $strName ]["database"]; $this->port = $MySQLConnectionsAvailable[ $strName ]["port"]; } /** * Abre a conexão com o banco de dados * * @author Sandro Alves Peres * @access public * @param Boolean $bitUseOpenedConnection - Diz se será usada a mesma conexão caso já esteja aberta * @return Void */ public function open( $bitUseOpenedConnection = true ) { global $MySQLConnectionsOpened; if( $bitUseOpenedConnection ) { if( !isset($MySQLConnectionsOpened[ $this->connection ]) ) { @$MySQLConnectionsOpened[ $this->connection ] = mysqli_connect($this->host, $this->user, $this->password, $this->database, $this->port); } } else { @$MySQLConnectionsOpened[ $this->connection ] = mysqli_connect($this->host, $this->user, $this->password, $this->database, $this->port); } if( $MySQLConnectionsOpened[ $this->connection ] ) { $this->query("SET character_set_results = '" . $this->charset . "'"); $this->query("SET character_set_client = '" . $this->charset . "'"); $this->query("SET character_set_connection = '" . $this->charset . "'"); $this->query("SET character_set_database = '" . $this->charset . "'"); $this->query("SET character_set_server = '" . $this->charset . "'"); } else { throw new Exception("Erro ao conectar com banco de dados!"); } } /** * Muda a database na conexão aberta * * @author Sandro Alves Peres * @access public * @param String $strDatabase - Nome da database * @return Void */ public function useDatabase( $strDatabase ) { global $MySQLConnectionsOpened; return mysqli_select_db( $MySQLConnectionsOpened[ $this->connection ], $strDatabase ); } /** * Fecha a conexão com o banco de dados * * @author Sandro Alves Peres * @access public * @return Void */ public function close() { global $MySQLConnectionsOpened; @mysqli_close( $MySQLConnectionsOpened[ $this->connection ] ); unset( $MySQLConnectionsOpened[ $this->connection ] ); } /** * Executa uma query no banco de dados * Para operações que não têm retorno * (INSERT, UPDATE, DELETE, etc) * * @author Sandro Alves Peres * @access public * @param String $strQuery - Query SQL * @return Void */ public function query( $strQuery ) { global $MySQLConnectionsOpened; @mysqli_free_result( $this->querySQL ); $this->querySQL = mysqli_query( $MySQLConnectionsOpened[ $this->connection ], $strQuery ); if( $this->getErrorNumber() > 0 ) { throw new Exception( $this->getError(), $this->getErrorNumber() ); return; } } /** * Executa uma query no banco de dados * Com retorno de uma única linha de dados * * @author Sandro Alves Peres * @access public * @param String $strQuery - Query SQL * @return Array */ public function queryFetchSingleRow( $strQuery ) { global $MySQLConnectionsOpened; @mysqli_free_result( $this->querySQL ); $this->querySQL = mysqli_query( $MySQLConnectionsOpened[ $this->connection ], $strQuery ); if( $this->getErrorNumber() > 0 ) { throw new Exception( $this->getError(), $this->getErrorNumber() ); return; } if( $this->querySQL ) { return mysqli_fetch_array($this->querySQL, MYSQLI_ASSOC); } else { return false; } } /** * Executa uma query no banco de dados * Com retorno de todos as linha da query * * @author Sandro Alves Peres * @access public * @param String $strQuery - Query SQL * @return Array */ public function queryFetchAllRows( $strQuery ) { global $MySQLConnectionsOpened; @mysqli_free_result( $this->querySQL ); $this->querySQL = mysqli_query( $MySQLConnectionsOpened[ $this->connection ], $strQuery ); if( $this->getErrorNumber() > 0 ) { throw new Exception( $this->getError(), $this->getErrorNumber() ); return; } if( $this->querySQL ) { $list = array(); while( $row = mysqli_fetch_array($this->querySQL, MYSQLI_ASSOC) ) { $list[] = $row; } return $list; } else { return false; } } /** * Retorna o número de linhas de uma query * previamente executada * * @author Sandro Alves Peres * @access public * @return Integer */ public function lines() { return mysqli_num_rows( $this->querySQL ); } /** * Retorna o número de campos de uma query * previamente executada * * @author Sandro Alves Peres * @access public * @return Integer */ public function fields() { return mysqli_num_fields( $this->querySQL ); } /** * Retorna o número de linhas afetadas por uma * query previamente executada * * @author Sandro Alves Peres * @access public * @return Integer */ public function affecteds() { global $MySQLConnectionsOpened; return mysqli_affected_rows( $MySQLConnectionsOpened[ $this->connection ] ); } /** * Retorna a descrição do erro ocorrido em * um query previamente executada * * @author Sandro Alves Peres * @access public * @return String */ public function getError() { global $MySQLConnectionsOpened; return mysqli_error( $MySQLConnectionsOpened[ $this->connection ] ); } /** * Retorna o número do erro ocorrido em * um query previamente executada * * @author Sandro Alves Peres * @access public * @return Integer */ public function getErrorNumber() { global $MySQLConnectionsOpened; return mysqli_errno( $MySQLConnectionsOpened[ $this->connection ] ); } /** * Retorna o AUTO_INCREMENT gerado * após uma inserção no banco de dados * * @author Sandro Alves Peres * @access public * @return Integer */ public function getLastInsertId() { global $MySQLConnectionsOpened; return mysqli_insert_id( $MySQLConnectionsOpened[ $this->connection ] ); } /** * Altera o autocommit da conexão * * @author Sandro Alves Peres * @access public * @param Boolean $bitAutoCommit - Diz se é autocommit ou não * @return Boolean */ public function autoCommit( $bitAutoCommit ) { global $MySQLConnectionsOpened; return mysqli_autocommit( $MySQLConnectionsOpened[ $this->connection ], $bitAutoCommit ); } /** * Inicia uma transação * * @author Sandro Alves Peres * @access public * @return Void */ public function startTransaction() { $this->query("START TRANSACTION"); } /** * Inicia uma transação * * @author Sandro Alves Peres * @access public * @return Void */ public function begin() { $this->query("BEGIN"); } /** * Inicia uma transação * * @author Sandro Alves Peres * @access public * @return Void */ public function beginWork() { $this->query("BEGIN WORK"); } /** * Cancela uma transação * * @author Sandro Alves Peres * @access public * @return Void */ public function rollback() { $this->query("ROLLBACK"); } /** * Confirma uma transação * * @author Sandro Alves Peres * @access public * @return Void */ public function commit() { $this->query("COMMIT"); } } ?>