* @copyright Copyright (c) 2011, Youzoom Soluções Web Ltda */ class Db { private $conn; private $erro; private $sql; private $msgErro; private $login = "site29381"; private $password = "P4W9xw5X3D0H"; private $database = "site29381"; private $host = "mysharedhost0134.locaweb.com.br"; /** * Executa uma instrução SQL * @param string $sql Instrução SQL * @param array $values Array contendo os dados de restrição da consulta (Opcional) * @return resource */ public function query($sql, $values = array()) { $this->sql = $sql; $this->erro = false; $res = NULL; try { $res = $this->conn->prepare($sql); $res->execute($values); } catch (PDOException $e) { $this->setErro($e->getMessage(), $sql); } return $res; } /** * Executa uma instrução SQL simples * @param string $sql Instrução SQL * @return int Retorna o número de linhas afetadas */ public function exec($sql) { $this->sql = $sql; $this->erro = false; $affected_rows = 0; try { $res = $this->conn->prepare($sql); $affected_rows = $this->conn->exec($sql); $res->closeCursor(); } catch (PDOException $e) { $this->setErro($e->getMessage(), $sql); } return $affected_rows; } /** * Obtém uma linha do resource * @param resource $res * @return recordset */ public function getRow($res) { $res->setFetchMode(PDO::FETCH_OBJ); return $res->fetch(); } /** * Executa uma instrução de inserção * @param string $sqlInsert Instrução SQL de inserção * @param array $values Array contendo os dados de inserção da consulta * @param string $primaryKeyName Nome da chave primária * @return int Em caso de sucesso, retorna a chave primária inserida, senão retorna NULL */ public function _insert($sqlInsert, $values, $primaryKeyName) { $this->sql = $sqlInsert; $this->erro = false; $primaryKeyInsertedValue = NULL; try { //$values[$primaryKeyName] = NULL; $res = $this->conn->prepare($sqlInsert); $res->execute($values); if($res->rowCount() > 0) { $primaryKeyInsertedValue = $this->conn->lastInsertId(); } //$res->closeCursor(); } catch (PDOException $e) { $this->setErro($e->getMessage(), $sqlInsert); } return $primaryKeyInsertedValue; } /** * Executa uma instrução de atualização (update ou delete) * @param string $sqlInsert Instrução SQL de atualização * @param array $values Array contendo os dados de restrição da consulta * @return int Retorna o número de linha afetadas pela instrução */ public function _update($sqlUpdate, $values) { $this->sql = $sqlUpdate; $this->erro = false; $affected_rows = 0; try { $res = $this->conn->prepare($sqlUpdate); $res->execute($values); $affected_rows = 1;//$res->rowCount(); $res->closeCursor(); } catch (PDOException $e) { $this->setErro($e->getMessage(), $sqlUpdate); } return $affected_rows; } /** * Executa uma instrução de remoção (delete) * @param string $sqlDelete Instrução SQL de atualização * @param array $values Array contendo os dados de restrição da consulta * @return int Retorna o número de linha afetadas pela instrução */ public function _delete($sqlDelete, $values) { $this->sql = $sqlDelete; $this->erro = false; $affected_rows = 0; try { $res = $this->conn->prepare($sqlDelete); $res->execute($values); $affected_rows = $res->rowCount(); $res->closeCursor(); } catch (PDOException $e) { $this->setErro($e->getMessage(), $sqlDelete); } return $affected_rows; } /** * Obtém uma lista de registros * @param string $sqlQuery SQL de consulta * @param array $values Array contendo os dados de restrição da consulta (Opcional) * @param string $offSet Limite inferior da conulta SQL (Opcional) * @param string $limit Limite superior da consulta SQL (Opcional) * @param boolean $returnInArray Seta o retorno para array, senão retorna resultset * @return array */ public function _list($sqlQuery, $values = array(), $offSet = NULL, $limit = NULL, $returnInArray = true) { $sqlQuery .= $this->getExpressionNumberRows($offSet, $limit); $this->sql = $sqlQuery; $this->erro = false; $records = array(); try { $res = $this->conn->prepare($sqlQuery); $res->execute($values); $res->setFetchMode(PDO::FETCH_OBJ); if($returnInArray === true) { $records = $res->fetchAll(); $res->closeCursor(); } else { $records = $res; } } catch (PDOException $e) { $this->setErro($e->getMessage(), $sqlQuery); } return $records; } /** * Obtém um único registro conforme restrição * @param string $sqlQuery SQL de consulta * @param array $values Array contendo os dados de restrição da consulta * @return object */ public function _load($sqlQuery, $values) { $this->sql = $sqlQuery; $this->erro = false; $record = NULL; try { $res = $this->conn->prepare($sqlQuery); $res->execute($values); $res->setFetchMode(PDO::FETCH_OBJ); $record = $res->fetch(); $res->closeCursor(); } catch (PDOException $e) { $this->setErro($e->getMessage(), $sqlQuery); } return $record; } /** * Obtém a última instrução SQL executada * @return string Instrução SQL */ public function getSql() { return $this->sql; } /** * Obtém o número de linhas retornado pela consulta * @param resource $res * @return int */ public function getNumRows($res) { return $res->rowCount(); } /** * Informa o status da última instrução SQL executada * @return bool True para sucesso, e False para Falha */ public function isQuerySuccess() { if($this->erro == FALSE) { return true; } else { return false; } } /** * Obtém o último ID inserido no banco de dados * @param string $prefix Prefixo da sequencia * @return int */ public function getLatestInsertedId($prefix) { $latestId = false; $res = $this->query("SELECT currval('seq_".$prefix."_id')"); if($res != NULL) { $tempResult = $res->fetch(PDO::FETCH_ASSOC); $latestId = $tempResult['currval']; } return $latestId; } /** * Obtém o próximo ID (chave primária) da tabela * @param string $primaryKeyName Nome da chave primária * @return int */ public function getNextId($primaryKeyName) { $nextId = false; $res = $this->query("SELECT nextval('seq_".$primaryKeyName."')"); if($res != NULL) { $tempResult = $res->fetch(PDO::FETCH_ASSOC); $nextId = $tempResult['nextval']; } return $nextId; } /** * Obtém o valor de uma única coluna resultante da consulta SQL * @param string $fieldName Nome da coluna a ser extraído o valor * @param string $sqlQuery SQL da consulta * @param array $values Array contendo os dados de restrição da consulta (Opcional) * @return string */ public function getFieldValue($sqlQuery, $values = array()) { $fieldValue = NULL; $res = $this->query($sqlQuery, $values); if($res != NULL) { $rowResult = $res->fetch(PDO::FETCH_NUM); $fieldValue = $rowResult[0]; unset($rowResult); } unset($res); return $fieldValue; } /** * Inicia uma transação * @return bool */ public function beginTransaction() { return $this->conn->beginTransaction();; } /** * Confirma transação * @return bool */ public function commit() { return $this->conn->commit(); } /** * Cancela transação * @return bool */ public function rollback() { return $this->conn->rollBack(); } public function freeResult($res) { unset($res); } /** * Gera a expressão SQL para limitar o número de linhas de retorno da consulta * @param int $offSet Limite infeior da consulta * @param int $limit Limite superior da consulta * @return string */ private function getExpressionNumberRows($offSet, $limit) { $sqlParamNumberRows = NULL; if(is_numeric($limit) && $limit >= 0) { if(is_numeric($offSet) && $offSet >= 0) { $sqlParamNumberRows .= " LIMIT ".$offSet.", ".$limit; } else { $sqlParamNumberRows .= " LIMIT ".$limit; } } else if(is_numeric($offSet) && $offSet >= 0) { //$sqlParamNumberRows .= " OFFSET ".$offSet; } return $sqlParamNumberRows; } /** * Obtém a expressão SQL de data/hora corrente do banco * @return string */ public function getExpressionTimestamp() { return "now()"; } /** * Obtém a expressão SQL para data corrente do banco * @return string */ public function getExpressionCurrentDate() { return "CURRENT_DATE"; } /** * Converte um date para string. * @param date $date Date a ser convertido * @param string $format Formatação da data. Ex.: d/m/Y * @return string */ public function convertDateToString($date, $format = "d/m/Y") { return $date != NULL ? date($format, strtotime($date)) : NULL; } /** * Converte um datetime para string. * @param datetime $date_time Datetime a ser convertido * @param string $format Formatação da data e/ou hora. Ex.: d/m/Y H:i * @return string */ public function convertDateTimeToString($date_time, $format = "d/m/Y H:i") { return $date_time != NULL ? date($format, strtotime($date_time)) : NULL; } /** * Converte uma string para date. * @param string $string_date String a ser convertida * @param string $format Formatação da data. Ex.: Y-m-d * @return date */ public function convertStringToDate($string_date, $format = "Y-m-d") { return ($string_date != "" ? date($format, strtotime(implode("/", array_reverse(explode("/", $string_date))))) : NULL); } /** * Converte uma string para datetime. * @param string $string_date_time String a ser convertida * @param string $format Formatação da data e/ou hora. Ex.: Y-m-d H:i * @return datetime */ public function convertStringToDateTime($string_date_time, $format = "Y-m-d H:i") { return ($string_date_time != "" ? date($format, strtotime($string_date_time)) : NULL); } /** * Converte a string numérica em decimal * @param string $string_float String numérica * @return decimal */ public function convertStringToDecimal($string_decimal) { $decimal = str_replace(",", ".", $string_decimal); if(strlen($decimal) == 0) { $decimal = NULL; } else if(is_numeric($decimal) !== true) { Throw new Exception("\"".$string_decimal."\" não é um valor decimal válido."); } return $decimal; } /** * Converte um valor decimal em string * @param decimal $decimal Valor decimal a ser convertido * @param int $precision Precisão numérica * @param string $separator Separador das casas decimais. * @return decimal */ public function convertDecimalToString($decimal, $precision = 2, $separator = ".") { return number_format($decimal, $precision, $separator, ""); } private function setErro($msg_erro, $sql) { $this->msgErro = $msg_erro; $this->erro = TRUE; $mensagem = "
";
        $mensagem .= "ERRO: [ ".$msg_erro." ]";
        $mensagem .= "
"; $mensagem .= "SQL: [ ".$sql." ]"; $mensagem .= "
"; echo $mensagem; } /** * Seta o servidor de banco de dados * @param string $host Endereço de IP ou nome do servidor Mysql */ public function setHost($host) { $this->host = $host; } /** * Seta o nome do banco de dados * @param string $database Nome do banco de dados Mysql */ public function setDatabase($database) { $this->database = $database; } /** * Seta o usuário de conexão com o banco de dados * @param string $login Usuário de conexão com o banco de dados */ public function setLogin($login) { $this->login = $login; } /** * Seta a senha de conexão com o banco de dados * @param string $password Senha de conexão com o banco Mysql */ public function setSenha($password) { $this->password = $password; } /** * Abre a conexão com o banco de dados */ public function connect() { try { $this->conn = new PDO("mysql:host=".$this->host.";dbname=".$this->database, $this->login, $this->password); // Habilita exceções $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); } catch (PDOException $e) { $this->setErro($e->getMessage(), "CONEXÃO COM O BANCO"); } } /** * Fecha a conexão com o banco de dados */ public function disconnect() { unset($this->conn); } public function getLastError() { return $this->msgErro; } /** * Construtor da classe de conexão * @param bool $autoConnect True para conectar ao instanciar a classe, e False para conexão manual */ public function __construct($autoConnect = true) { if($autoConnect !== false) { $this->connect(); } } /** * Destrutor da classe de conexão */ public function __destruct() { $this->disconnect(); } } ?>
Fatal error: Class 'Db' not found in /home/storage/8/50/56/site29381/public_html/_inc/config.php on line 33