Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida


Guest Caio Canalli

Pergunta

Guest Caio Canalli

Bom dia a todos! Tenho uma duvida simples em relaçao ao acesso do PHP ao banco de dados. Estou criando um aplicaçao de grande porte em que terei que fazer muitos acessos ao banco de dados, com diferentes classes( Cadastro, Alteracao). Qual a melhor maneira de fazer essas operaçoes: criando um arquivo separado com todos os tipos de consulta, inserçao, atualizaçao no banco de dados ou, ir fazendo esses acessos ao longo de todo o meu codigo? Por exemplo: tenho um arquivo chamdo UsuarioService com essas e outras funçoes

#################################################################################################################

public function getUsuarioByUser($itemID) {

$stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename where usuario_user=?");

$this->throwExceptionOnError();

mysqli_stmt_bind_param($stmt, 's', $itemID);

$this->throwExceptionOnError();

mysqli_stmt_execute($stmt);

$this->throwExceptionOnError();

mysqli_stmt_bind_result($stmt, $row->usuario_id, $row->usuario_user, $row->usuario_senha, $row->usuario_logado, $row->usuario_nivel, $row->Perfil_perfil_id);

if(mysqli_stmt_fetch($stmt)) {

return $row;

} else {

return null;

}

}

public function getUsuarioBySenha($itemUsuario, $itemSenha) {

$stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename where usuario_user=? AND usuario_senha=?");

$this->throwExceptionOnError();

//$senha = md5($itemSenha);

mysqli_stmt_bind_param($stmt, 'ss', $itemUsuario, $itemSenha);

$this->throwExceptionOnError();

mysqli_stmt_execute($stmt);

$this->throwExceptionOnError();

mysqli_stmt_bind_result($stmt, $row->usuario_id, $row->usuario_user, $row->usuario_senha, $row->usuario_logado, $row->usuario_nivel, $row->Perfil_perfil_id);

if(mysqli_stmt_fetch($stmt)) {

return $row;

} else {

return null;

}

}

#############################################################################################################################

Ou eu devo utilizar essa sintaxe:

#############################################################################################################################

class AgendaDAO extends PDOConnectionFactory {

// irá receber uma conexão

public $conex = null;

// constructor

public function AgendaDAO(){

$this->conex = PDOConnectionFactory::getConnection();

}

// realiza uma inserção

public function Insere( $agenda ){

try{

// preparo a query de inserçao - Prepare Statement

// note que no logar dos valores eu não estou passando ".$agenda->getValorx().", ...

// isso ficaria uma porta aberta para um SQL Injection.

$stmt = $this->conex->prepare("INSERT INTO agenda (id, nome, email, telefone) VALUES (?, ?, ?, ?)");

// valores encapsulados nas variáveis da classe Agenda.

// sequencia de índices que representa cada valor de minha query

$stmt->bindValue(1, $agenda->getId() );

$stmt->bindValue(2, $agenda->getNome() );

$stmt->bindValue(3, $agenda->getEmail() );

$stmt->bindValue(4, $agenda->getTelefone() );

// executo a query preparada

$stmt->execute();

// fecho a conexão

$this->conex = null;

// caso ocorra um erro, retorna o erro;

}catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }

}

// realiza um Update

public function Update( $agenda, $condicao ){

try{

// preparo a query de update - Prepare Statement

$stmt = $this->conex->prepare("UPDATE agenda SET nome=?, email=?, telefone=? WHERE id=?");

$this->conex->beginTransaction();

// valores encapsulados nas variáveis da classe Agenda.

// sequencia de índices que representa cada valor de minha query

$stmt->bindValue(1, $agenda->getNome() );

$stmt->bindValue(2, $agenda->getEmail() );

$stmt->bindValue(3, $agenda->getTelefone() );

$stmt->bindValue(4, $condicao);

// executo a query preparada

$stmt->execute();

$this->conex->commit();

// fecho a conexão

$this->conex = null;

// caso ocorra um erro, retorna o erro;

}catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }

}

// remove um registro

public function Deleta( $id ){

try{

// executo a query

$num = $this->conex->exec("DELETE FROM agenda WHERE id=$id");

// caso seja execuado ele retorna o número de rows que foram afetadas.

if( $num >= 1 ){ return $num; } else { return 0; }

// caso ocorra um erro, retorna o erro;

}catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }

}

public function Lista($query=null){

try{

if( $query == null ){

// executo a query

$stmt = $this->conex->query("SELECT * FROM agenda");

}else{

$stmt = $this->conex->query($query);

}

// desconecta

$this->conex = null;

// retorna o resultado da query

return $stmt;

}catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }

}

}

#############################################################################################################################

Obrigado pela ajuda!!!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...