/** * 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; }
/** * 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 }