예제 #1
0
 /**
  * O método getLink estabelece ou recupera uma conexão com o banco de dados, se não for passado nenhum parâmetro no contrutor o sistema buscará as variáveis
  * globais do arquivo de configuração do banco de dados (configDataBase.php)
  * <p> A passagem de parâmetros ocorre quando houver necessidade de alterar o banco de dados
  * da classe persistente.
  * @access public
  * @return mixed [conexão ao banco de dados]
  */
 public function getLink()
 {
     # garante apenas uma instância da classe \PDO.
     if (!is_object($this->link)) {
         if (is_null($this->port)) {
             # Bloco executado se a porta de conexão for padrão
             $this->dsn = $this->driver . ":host=" . $this->host . ";dbname=" . $this->dbname;
         } else {
             # Bloco acessado se a porta de conexão for definida pelo usuário
             $this->dsn = $this->driver . ":host=" . $this->host . ";port=" . $this->port . ";dbname=" . $this->dbname;
         }
         try {
             # Cria uma conexão com o banco de dados
             $this->link = new \PDO($this->dsn, $this->username, $this->passwd, $this->options);
         } catch (\PDOException $e) {
             /*
              * Se ocorrer excessão, os dados são passados para a classe de controle
              * de excessão do framework. Essa classe gerencia os dados que são passados
              * na interface do usuário e fornece as opções para solução do problema.
              */
             \core\dba\pdo\Exception::debugException($e->getMessage(), $e->getCode(), $e->getTrace());
         }
         $this->link->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
     }
     return $this->link;
 }
예제 #2
0
 /**
  * função para executar as instruções SQL no banco de dados
  * @return boolean
  */
 public function execute()
 {
     $this->result = $this->link->prepare($this->{$this->function}()->prepare());
     switch ($this->function) {
         case 'select':
             # Verificar a consistência dos parâmetros (segurança)
             if (!empty($this->{$this->function}()->bindValue())) {
                 foreach ($this->{$this->function}()->bindValue() as $kBindValue => $vBindValue) {
                     $this->result->bindValue(":" . $kBindValue, $vBindValue);
                 }
             }
             # public bool PDOStatement::bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )
             $this->{$this->function} = null;
             try {
                 # Executar a consulta no banco de dados
                 $this->result->execute();
                 # Indexar o resultado da pesquisa pelo nome do campo e/ou pelo índice
                 $this->fetchMode("FETCH_ASSOC");
                 # recuperar o número de registros da consulta
                 $this->rows = $this->result->rowCount();
                 #----
                 # debug(__FILE__, __LINE__, $this->result->rowCount(),"NÚMERO DE LINHAS:");
                 # Recuperar a consulta como um array de dados
                 return $this->result->fetchAll();
             } catch (\PDOException $e) {
                 # Controla a exceção na execução de uma query no banco de dados
                 \core\dba\pdo\Exception::debugException($e->getMessage(), $e->getCode(), $e->getTrace());
                 return false;
             }
             break;
         case 'update':
             if (!empty($this->{$this->function}()->bindValue())) {
                 foreach ($this->{$this->function}()->bindValue() as $kBindValue => $vBindValue) {
                     $this->result->bindValue(":" . $kBindValue, $vBindValue);
                 }
             }
             $this->{$this->function} = null;
             try {
                 # Executa a instrução SQL
                 $this->result->execute();
                 # Recupera o número de linhas afetadas pela instrução
                 $this->rows = $this->result->rowCount();
                 return $this->rows;
             } catch (\PDOException $e) {
                 // Controla a exceção na execução de uma query no banco de dados
                 \core\dba\pdo\Exception::debugException($e->getMessage(), $e->getCode(), $e->getTrace());
                 return null;
             }
             break;
         case 'insert':
             if (!empty($this->{$this->function}()->bindValue())) {
                 foreach ($this->{$this->function}()->bindValue() as $kBindValue => $vBindValue) {
                     $this->result->bindValue(":" . $kBindValue, $vBindValue);
                 }
             }
             $this->{$this->function} = null;
             try {
                 # Executar a inserção no banco de dados
                 $this->result->execute();
                 # recuperar o número de registros da consulta
                 $this->rows = $this->result->rowCount();
                 return $this->rows;
             } catch (\PDOException $e) {
                 # Controla a exceção na execução de uma query no banco de dados
                 \core\dba\pdo\Exception::debugException($e->getMessage(), $e->getCode(), $e->getTrace());
                 return false;
             }
             break;
         case 'delete':
             if (!empty($this->{$this->function}()->bindValue())) {
                 foreach ($this->{$this->function}()->bindValue() as $kBindValue => $vBindValue) {
                     $this->result->bindValue(":" . $kBindValue, $vBindValue);
                 }
             }
             $this->{$this->function} = null;
             try {
                 # Executa a instrução SQL
                 $this->result->execute();
                 # Recupera o número de linhas afetadas pela instrução
                 $this->rows = $this->result->rowCount();
                 return $this->rows;
             } catch (\PDOException $e) {
                 # Controla a exceção na execução de uma query no banco de dados
                 \core\dba\pdo\Exception::debugException($e->getMessage(), $e->getCode(), $e->getTrace());
                 return null;
             }
             break;
         default:
             break;
     }
     #switch
 }