Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Primeiramente, feliz natal.
Vamos a duvida.
Qual é o melhor dos 2 métodos que eu uso para cadastrar uma conta no banco
PHP Orientado a Objetos PDO
Método que uso, Repara que nele, eu coloco os métodos da classe direto na query,
outra diferença é o tamanho da função também, ela é mais compacta.
public function inserir_usuario($usuario){
try {
if ($this->verificaUsuario($usuario) == TRUE){
return $erro = "Usuário ou Email já cadastrados.";
}else if($this->verificaUsuario($usuario) == FALSE){
$this->Create = $this->Conn->prepare("INSERT INTO users(username,password,mail,auth_ticket,rank,credits,activity_points,look,gender,motto,account_created,ip_last,ip_reg,vip,real_name) VALUES('{$usuario->get_username()}','{$usuario->get_password()}','{$usuario->get_mail()}','{$usuario->get_auth_ticket()}','{$usuario->get_rank()}','{$usuario->get_credits()}','{$usuario->get_activity_points()}','{$usuario->get_look()}','{$usuario->get_gender()}','{$usuario->get_motto()}','{$usuario->get_account_created()}','{$usuario->get_ip_last()}','{$usuario->get_ip_reg()}','{$usuario->get_vip()}','{$usuario->get_real_name()}')");
$this->Create->execute();
if($this->Create->rowCount() > 0){
$this->Result = $this->Conn->LastInsertId();
return TRUE;
}else{
return FALSE;
}
}
} catch (PDOException $ex) {
exibeMensagens($Msg, $ErrNo);
}
}
Segundo método, neste eu uso o bindParam, e não coloco os métodos do objetos direto na query.
repare que o tamanho é bem maior, em relação a quantidade de linhas, lembrando que tive que declarar as variáveis com o Get da classe, pois ela direto no bindParam não funcionou.
public function inserir_usuario($usuario){
try {
if($this->verificaUsuario($usuario) == TRUE){
return $erro = "Usuário ou Email já cadastrados.";
}else if($this->verificaUsuario($usuario) == FALSE){
$nome = $usuario->get_username();
$senha = $usuario->get_password();
$email = $usuario->get_mail();
$tiket = $usuario->get_auth_ticket();
$rank = $usuario->get_rank();
$creditos = $usuario->get_credits();
$dukets = $usuario->get_activity_points();
$look = $usuario->get_look();
$sexo = $usuario->get_gender();
$missao = $usuario->get_motto();
$datacri = $usuario->get_account_created();
$ultimo_ip = $usuario->get_ip_last();
$ip_registro = $usuario->get_ip_reg();
$get_vip = $usuario->get_vip();
$nome_real = $usuario->get_real_name();
$query = "INSERT INTO users(username,password,mail,auth_ticket,rank,credits,activity_points,look,gender,motto,account_created,ip_last,ip_reg,vip,real_name) VALUES(:nome,:senha,:email,:tiket,:rank,:creditos,:dukets,:look,:sexo,:missao,:datacri,:ultimo_ip,:ip_registro,:get_vip,:nome_real";
$this->Create = $this->Conn->prepare($query);
$this->Create->bindParam(':nome' , $nome , PDO::PARAM_STR);
$this->Create->bindParam(':senha' , $senha , PDO::PARAM_STR);
$this->Create->bindParam(':email' , $email , PDO::PARAM_STR);
$this->Create->bindParam(':tiket' , $tiket , PDO::PARAM_STR);
$this->Create->bindParam(':rank' , $rank , PDO::PARAM_INT);
$this->Create->bindParam(':creditos' , $creditos , PDO::PARAM_INT);
$this->Create->bindParam(':dukets' , $dukets , PDO::PARAM_INT);
$this->Create->bindParam(':look' , $look , PDO::PARAM_STR);
$this->Create->bindParam(':sexo' , $sexo , PDO::PARAM_STR);
$this->Create->bindParam(':missao' , $missao , PDO::PARAM_STR);
$this->Create->bindParam(':datacri' , $datacri , PDO::PARAM_STR);
$this->Create->bindParam(':ultimo_ip' , $ultimo_ip , PDO::PARAM_STR);
$this->Create->bindParam(':ip_registro' , $ip_registro, PDO::PARAM_STR);
$this->Create->bindParam(':get_vip' , $get_vip , PDO::PARAM_INT);
$this->Create->bindParam(':nome_real' , $nome_real , PDO::PARAM_STR);
$this->Create->execute();
if($this->Create->rowCount() > 0){
$this->Result = $this->Conn->LastInsertId();
return TRUE;
}else{
return FALSE;
}
}
} catch (PDOException $ex) {
exibeMensagens("Erro ao consultar. {$ex->getMessage()}", WS_ERROR);
}
}
Qual deles é o mais indicado, e em relação a segurança de entrada de dados, o segundo é realmente melhor, ou não faz muita diferença?
Carregando comentários...