Desenvolvimento PHP - Boas Práticas - Interações com o banco de dados

De DTI Wiki

Ir para: navegação, pesquisa

Bp.png BOA PRÁTICA

Interações com o banco de dados, são as chamadas de procedimentos, funções e consulta oracle pelo PHP. A boa prática adotada é que toda interação deve possuir um programa oracle e o mesmo deve ser chamado no PHP, não utilizando código SQL nas aplicações.


Vejamos abaixo alguns exemplos:

Comonfazer.png COMO NÃO FAZER

Utilização de SQL:

 
<? 
 
// exemplo atual com sql 
function retornaFatorVencimento($app,$datavencimento){
    global $retornaFatorVencimentoDTVenc; 	 	          
 
    $retornaFatorVencimentoDTVenc = $datavencimento;  	     
 
    $sql_fatorvencimento = "select to_date('$retornaFatorVencimentoDTVenc','dd/mm/rrrr') -to_date('07/10/1997','dd/mm/rrrr') as fatorvencimento from dual"; 	      
 
    if(!$app->executeDefaultSql($sql_fatorvencimento, null, false)){
        setMessage($app, '<br>não executou_3, erro='.$application->getErrorMessage(), 'erro');
    }
    if(!$data_fatorvencimento = $app->fetchRow()){ 	
        setMessage($app, "no rows (sql_fatorvencimento)<br>", 'erro');
    }else{
 	$fatorvencimento = $data_fatorvencimento["FATORVENCIMENTO"];
        if($fatorvencimento < 0){
            $fatorvencimento = 0;
        }
    }
    return $fatorvencimento;
}

Chamadas de procedimentos utilizando variáveis globais:

 
<?
 
// exemplo com chamada antiga e variáveis globais 
function getAlunosProuni($app, $codbanca, $codaluno = NULL){
    global $getAlunosProunicodbanca, $getAlunosProunicodaluno;
    $getAlunosProunicodbanca = $codbanca;
    $getAlunosProunicodaluno = $codaluno;
 
    $query = "begin acdesenv.pkg_notaswebexames.prc_retprouni(:in_codbanca, :in_codaluno, :cur); end;";
 
    $params = array(
                     array("parameter"=>":in_codbanca", "variable"=>"getAlunosProunicodbanca", "value"=>$getAlunosProunicodbanca, "length"=>6),
                     array("parameter"=>":in_codaluno", "variable"=>"getAlunosProunicodaluno",		"value"=>$getAlunosProunicodaluno, "length"=>6)
                    );
 
    if(!$app->executeCursor($query, $params)){
         erro($app, 'Ocorreu um erro ao buscar alunos bolsa Prouni.', $app->geterrormessage(), "ATENÇÃO", "#");                     exit;
    }
 
 
    $alunos = array();
    $alunos = $app->getAllrows();
    return $alunos;
}

Comofazer.png COMO FAZER

Transformando SQL em um programa oracle e chamando no PHP.

 
<?
// exemplo correto com a utilização da db. 
// nesse exemplo deve ser criado uma function oracle que será chamado pela db  
function retornaFatorVencimento($app, $datavencimento){
    $res = db($app, 'F', 'addesenv.fun_fatorvencimento', $datavencimento);
 
    if($res['ERROR']){
        erro($app, 'Ocorreu um erro ao buscar o fator de vencimento.', $res['ERRORMESSAGE'], "ATENÇÃO", "#");
        exit;
    }
    $fatorvencimento = $res['RESULT'];
    if($fatorvencimento < 0){
        $fatorvencimento = 0;
    }
    return $fatorvencimento;
}

Chamada de procedimento sem a utilização de variáveis globais

 
<?
// exemplo correto, com a utilização da db 
 
function getAlunosProuni($app, $codbanca, $codaluno = NULL){
    $res = db($app, 'C', "acdesenv.pkg_notaswebexames.prc_retprouni", $codbanca, $codaluno);
 
    if($res['ERROR']){
        erro($app, 'Ocorreu um erro ao buscar alunos bolsa Prouni.', $res['ERRORMESSAGE'], "ATENÇÃO", "#");
        exit;
    }
 
 
    return $res['RESULT'];
}
?>
Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas