public function ExecuteUpdate($table, $data, $where) { if (is_object($data)) { ModelState::ModelTreatment($data); } $data = (array) $data; // Ordena ksort($data); // Define os dados que ser�o atualizados $novosDados = NULL; foreach ($data as $key => $value) { $novosDados .= "`{$key}`=:{$key},"; } $novosDados = rtrim($novosDados, ','); // Prepara a Query $sth = $this->prepare("UPDATE {$table} SET {$novosDados} WHERE {$where}"); // Define os dados foreach ($data as $key => $value) { // Se o tipo do dado for inteiro, usa PDO::PARAM_INT, caso contr�rio, PDO::PARAM_STR $tipo = is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR; // Define o dado $sth->bindValue(":{$key}", $value, $tipo); } // Sucesso ou falha? return $sth->execute(); }
/** * Atualiza os dados no banco atraves de uma model mapeada * @param $model Objeto que contem os dados * @param $campos Seleciona os campos que quer atulizar passando por array, caso seja nulo serão atualizados todos os campos */ public function Update($model, array $campos = null) { $this->OpenTransaction(); $data = clone $model; if (is_object($data)) { ModelState::ModelTreatment($data); } $primaryKey = ModelState::GetPrimary($model); if ($primaryKey == null) { throw new UnitOfWorkException("Classe nao contem PK"); } $table = $this->getTableName($data); $data = (array) $data; $novosDados = NULL; if ($campos == null) { $campos = array_keys($data); } foreach ($campos as $key) { $novosDados .= "`{$key}`=:{$key},"; } $novosDados = rtrim($novosDados, ','); // Prepara a Query $sth = $this->prepare("UPDATE {$table} SET {$novosDados} WHERE {$primaryKey} = '" . $model->{$primaryKey} . "'"); // Define os dados foreach ($campos as $key) { // Se o tipo do dado for inteiro, usa PDO::PARAM_INT, caso contr�rio, PDO::PARAM_STR $tipo = is_int($model->{$key}) ? \PDO::PARAM_INT : \PDO::PARAM_STR; // Define o dado $sth->bindValue(":{$key}", $model->{$key}, $tipo); } try { $sth->execute(); $model = $this->GetById($table, $model->{$primaryKey}); } catch (\Exception $e) { echo $e->getMessage(); } }