Sep 26 2008

Prepared Statements e CakePHP

Category: CakePHP,PHP,SQLvbmendes @ 10:17

Precisei montar uma SQL “na mão” usando o CakePHP pois ela era muito complexa. Mas me bateu a preocupação com o famoso SQL injection. Então me lembrei das minhas aulas de Programação Orientada a Objetos em que o professor falou que em java existia um método de uso de SQL chamado de prepared statement. O qual você monta a SQL colocando ‘?’ onde serão colocados parâmetros que serão passado para a SQL. Mas ele me mostrou como fazer isso em Java, então fui em busca de uma solução parecida em CakePHP e encontrei. Vou postar um exemplo simples que logicamente poderia ser feito usando a abstração de banco do cake:

$query = "SELECT nome FROM pessoa WHERE id = ? AND cpf = ?";
$values = array($this->params['named']['pessoa_id'],$this->params['named']['cpf']);
$this->Pessoa->query($query,$values);
Veja que eu passei dois parâmetros para o método query do model: o meu SQL com duas ‘?’ e um array com dois objetos que irão substituir as duas ‘?’ do SQL. Veja que a ordem de substituição é a natural, ou seja, o primeiro item do array substitui a primeira ‘?’ do SQL e assim sucessivamente.

É recomendado o uso dos prepared statements sempre que tiver que criar consultas com SQL e que precisem de parâmetros.

Tags: , , , , ,

3 Responses to “Prepared Statements e CakePHP”

  1. Marcelo Sabadini says:

    Muito boa dica… nao conhecia este recurso e ja fiz muito SQL ´no dedo´ usando o cake…

    E sobre o tema, muito bom ter trocado hehehehe

    Abracos

  2. Marcelo Sabadini says:

    soh falta traduzi-lo heheheheh

  3. fabiomcosta says:

    Estamos querendo deixar o blog acessível a todos, por isso está em inglês e estamos postando algumas coisas em inglês. Obrigado pela preocupação de qualquer forma. Abraço!