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: , , , , ,


Sep 12 2008

Trabalhando com JSON no CakePHP 1.2

Category: Ajax,CakePHP,Javascriptvbmendes @ 07:43

 Gostei da forma como o Juan Basso trabalha para renderizar objetos JSON através do CakePHP. Ficou bem limpa e da conta do recado. Segue o link do post falando sobre isso: http://blog.cakephp-brasil.org/2008/09/11/trabalhando-com-json-no-cakephp-12/

Tags:


Jun 02 2008

CakePHP – Herança de Helper

Category: CakePHP,PHPvbmendes @ 14:03

Ultimamente tenho utilizado o Framework CakePHP, e uma dúvida que me surgiu esses dias foi como um Helper herdar de outro helper. Por exemplo, criei um helper MyTimeHelper que herda do TimeHelper, e adicionei um método que sobrescreve o format. Entretanto, me ocorria um problema que o script não conseguia encontrar o TimeHelper, por ele não ter sido invocado pelo core do cake. Então eu adicionei a linha App::import(‘Helper’,'Time’); no início da definição do MyTimeHelper e o problema foi resolvido. Então o codigo fica assim:

App::import('Helper', 'Time');

class MyTimeHelper extends TimeHelper { ... }

Tags: ,


« Previous Page