Questions about PDO preparation structure

Asked

Viewed 47 times

0

I have the class connected:

<?php
 /*
 * Constantes de parâmetros para configuração da conexão
 */
define('SGBD', 'mysql');
define('HOST', 'localhost');
define('DBNAME', 'db_blog');
define('CHARSET', 'utf8');
define('USER', 'root');
define('PASSWORD', '');
//define('SERVER', 'linux');

class conexao {

    /*
     * Atributo estático de conexão
     */
    private static $pdo;

    /*
     * Escondendo o construtor da classe
     */
    private function __construct() {
        //
    }

    /*
     * Método privado para verificar se a extensão PDO do banco de dados escolhido
     * está habilitada
     */
    private static function verificaExtensao() {

        switch(SGBD):
            case 'mysql':
                $extensao = 'pdo_mysql';
                break;
            case 'mssql':{
                if(SERVER == 'linux'):
                    $extensao = 'pdo_dblib';
                else:
                    $extensao = 'pdo_sqlsrv';
                endif;
                break;
            }
            case 'postgre':
                $extensao = 'pdo_pgsql';
                break;
        endswitch;

        if(!extension_loaded($extensao)):
            echo "<h1>Extensão {$extensao} não habilitada!</h1>";
            exit();
        endif;
    }

    /*
     * Método estático para retornar uma conexão válida
     * Verifica se já existe uma instância da conexão, caso não, configura uma nova conexão
     */
    public static function getInstance() {

        self::verificaExtensao();

        if (!isset(self::$pdo)) {
            try {
                $opcoes = array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
                switch (SGBD) :
                    case 'mysql':
                        self::$pdo = new \PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        break;
                    case 'mssql':{
                        if(SERVER == 'linux'):
                            self::$pdo = new \PDO("dblib:host=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        else:
                            self::$pdo = new \PDO("sqlsrv:server=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        endif;
                        break;
                    }
                    case 'postgre':
                        self::$pdo = new \PDO("pgsql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        break;
                endswitch;
                self::$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
            } catch (PDOException $e) {
                print "Erro: " . $e->getMessage();
            }
        }
        return self::$pdo;
    }

    public static function isConectado(){

        if(self::$pdo):
            return true;
        else:
            return false;
        endif;
    }

}

And the class AncoDados:

<?php
    class classBancoDados    
    {
        protected $ComandoSQL;

        // Construtor

        Function __construct()    
        {
            $this->setComandoSQL();
        }

        //Métodos Públicos

        public function getComandoSQL()
        {
            return $this->ComandoSQL;
        }

        public function setComandoSQL($ComandoSQL)
        {
            $this->ComandoSQL = $ComandoSQL;
        }

        public function SetSELECT($Campos = "", $Tabela = "", $CampoOrdenacao = "", $Ordem = "")
        {
            if(($Campos != "") && ($Tabela != ""))
            {
                $this->ComandoSQL = "SELECT  " . $Campos . " FROM " . $Tabela; 

                if($Ordem != "") {
                    $this->ComandoSQL .= " ORDDER BY ";  
                    $this->ComandoSQL .= $CampoOrdenacao;  
                }
            }

        }

    }

                                        /*
                                    $sql = 'SELECT UF, Cidade, Endereco, Numero, Bairro, Telefone  FROM hoteis';
                                    $rs = $conexao->prepare($sql);
                                    $rs->execute(); 
                                    */

    $conexao_db = new classBancoDados();
    $conexao_db->SetSELECT("*", "hotei","UF, Cidade");

    $conexao = conexao::getInstance();
    $ResultSet = $conexao->prepare(*** O que deve vir aqui?);
    $registros = $ResultSet->fetchAll(PDO::FETCH_OBJ);  

echo ??? what should come here?

I am studying PHP7 and am layman and would like to know what I should put in the instruction Prepare to get a valid response from the database.

Thanks in advance for your attention

1 answer

0


You should put the query you want to execute. In your case, I understood is the value of $this->ComandoSQL. For example:

<?php
$result = $conexao->prepare($this->ComandoSQL);
  • Thank you very much!!! it worked... it was exactly what I intended... to get the query return. thanks !!!!

  • Mark the answer as accepted by clicking on Checkmark, please.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.