William Bruno 1501 Denunciar post Postado Setembro 20, 2011 "Estou dizendo isso porque você não entendeu, você acha que entendeu, o que não significa que entendeu. Entendeu?" - Hatake Kakashi Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 20, 2011 "Estou dizendo isso porque você não entendeu, você acha que entendeu, o que não significa que entendeu. Entendeu?" - Hatake Kakashi kkkkk, srry pelo flood ² Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Abril 26, 2012 Bom, adicionando algo à discussão, após definido como vai ser o acesso a banco, fica bem simples implementar um crud básico: class CRUD { private $adapter; private $tableName; public function __construct(DbAdapter $adapter, $tableName) { $this->adapter = $adapter; $this->tableName = $tableName; } public function insert(array $data) { foreach($data as &$each) { $each = $this->adapter->quote($each); } $sql = 'INSERT INTO ' . $this->tableName . '(' . join(', ', array_keys($data)) . ')' . ' VALUES(' . join(',', $data) . ')'; return $this->adapter->query($sql); } public function update(array $data, $cond) { $set = array(); foreach($data as $key => $each) { $set[] = $key . ' = ' . $this->adapter->quote($each); } $sql = 'UPDATE ' . $this->tableName . " " . join(', ' . $set) . ' WHERE ' . $cond; return $this->adapter->query($sql); } public function delete($cond) { $sql = 'DELETE FROM ' . $this->tableName . ' WHERE ' . $cond; return $this->adapter->query($sql); } public function select() { return $this->adapter->createSelect(); } } Note que as sentenças INSERT, UPDATE e DELETE são praticamente idênticas na maioria dos SGBDRs, então não precisamos manter isso no adapter. Entretanto, uma sentença SELECT, que normalmente pode ser complexa, precisa de uma implementação para cada SGBD, assim, seu adapter deve retornar um objeto select específico para aquele SGBD, ex.: Select_MySQL, Select_PostgreSql, etc. O método query de fato executa o $sql montado. Você pode alterar um pouco para dar suporte a prepared statements. É importante que cada adapter possua um método quote, que coloca a maioria dos tipos de dados (char, varchar, date, etc...) entre aspas. Alguns SGBDs utilizam aspas simples, enquanto outros, aspas duplas. O basicão é isso aí... Agora você se vira pra melhorar :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites