Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

PDO statement

  • Por favor, faça o login para responder
9 respostas neste tópico

#1 Vadio

Vadio

    EricRF

  • Membros
  • 825 posts

Postado 02 agosto 2012 - 04:24

bom galera to tentando aprende a usa o pdo
mas não consegui usar o statement se alguém puder me auxiliar

aí vai
controller
	public function login($email,$senha){
		$sql = "SELECT * FROM Usuario WHERE Usuario.email= '$email' AND Usuario.senha= MD5('$senha');";
		$Mypdo = new myPDO();
		$result = $Mypdo->query($sql);
		return $result;
		
	}
view
	public function login(){
		$email = $_POST['email'];
		$senha = $_POST['senha'];
		
		try{
			if(!$this->model->setEmail($email)) throw new myErrorException('E-mail inválido');
			if(!$this->model->setSenha($senha)) throw new myErrorException('Senha inválida');
			
			$result = $this->controller->login($this->model->getEmail(), $this->model->getSenha());	
			$Usuario = $result->fetchAll(PDO::FETCH_CLASS,'modelUsuario');
			
			if(empty($Usuario)) throw new myErrorException('E-mail e/ou senha inválidos');
			if(isset($Usuario) && sizeof($Usuario) == 1) $this->controller->setSession($Usuario);

			echo 'Sucesso';
		}catch (myErrorException $e){
			echo $e->getMessage();
		}
	}

  • 0

#2 Vadio

Vadio

    EricRF

  • Membros
  • 825 posts

Postado 02 agosto 2012 - 08:05

consegui usar ela assim mas o bindParam não consegui ainda...
$sql = 'INSERT INTO Usuario (id,permissao_id,email,senha) VALUES ("",?,?,md5(?));';
		
		$Mypdo = new myPDO();	
		$stmt = $Mypdo->prepare($sql);
		$result = $stmt->execute(array($permissao_id,$email,$senha)) or die('errorCode:'.$Mypdo->errorCode().' - errorInfo:'.var_dump($Mypdo->errorInfo()));
gostaria de usar o bindparam na instrução SELECT do primeiro post, alguém ae sabe me dizer como fazer?
  • 0

#3 Gabriel Heming

Gabriel Heming

    Analista Desenvolvedor PHP

  • Moderadores Trainee
  • 1.745 posts

Postado 02 agosto 2012 - 09:05

$sql = "
    SELECT 
        * 
    FROM 
        Usuario 
    WHERE 
        Usuario.email = :email 
        AND Usuario.senha= MD5(:senha);";
$Mypdo = new myPDO();
$statement = $Mypdo->prepare($sql);
$statement->bindParam(':email' , $email);
$statement->bindParam(':senha' , $senha);
$result = $statement->execute();
return $result;

O mais importante, é que entenda o que foi feito. Pergunte sobre suas dúvidas, e não apenas como se faz.
  • 1

#4 Vinicius Rangel

Vinicius Rangel
  • Membros
  • 2.145 posts

Postado 02 agosto 2012 - 09:25

perfeito Gabriel, o nosso objetivo aqui é ajudar a entender as coisas e não simplesmente como se fazer.

por isso procure entender o por que tem que usar o bindParam e o que ele faz com seus dados e se pergunte até o por que de usar o PDO
  • 1

#5 Vadio

Vadio

    EricRF

  • Membros
  • 825 posts

Postado 03 agosto 2012 - 05:04

continuo não conseguindo fazer
oq eu to fzd errado??


	public function update($Pessoa_model){
		$sql = 'UPDATE Pessoa SET';
		$sql.= '	Pessoa.primeiro_nome = :primeiro_nome,';
		$sql.= '	Pessoa.ultimo_nome = :ultimo_nome,';
		$sql.= '	Pessoa.nascimento = :nascimento,';
		$sql.= '	Pessoa.cpf = :cpf,';
		$sql.= '	Pessoa.rg = :rg';
		$sql.= ' WHERE Pessoa.id = :id  ;';
		
		$Mypdo = new MyPDO();
		$stmt = $Mypdo->prepare($sql);
		$stmt->bindParam(':primeiro_nome', $Pessoa_model->getPrimeiro_nome);
		$stmt->bindParam(':ultimo_nome', $Pessoa_model->getUltimo_nome);
		$stmt->bindParam(':nascimento', $Pessoa_model->getNascimento);
		$stmt->bindParam(':cpf', $Pessoa_model->getCpf);
		$stmt->bindParam(':rg', $Pessoa_model->getRg);
		$stmt->bindParam(':id',$_SESSION['usuario'][0]->id);
	
		$result = $stmt->execute();
		
		if($result) return true;
		else return false;
	}

  • 0

#6 Bruno Augusto

Bruno Augusto

    Sou Bobo Também ¬¬

  • Moderadores
  • 6.333 posts

Postado 03 agosto 2012 - 09:28

Logo depois de instanciar a PDO, adicione:

$Mypdo -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
Isso vai habilitar o disparo das PDOException's que, por padrão, não são disparadas, ocultando os erros.

Assim você vai ver o que é o problema e, se não resolver sozinho, terá algo para informar-nos.
  • 0

#7 Henrique Barcelos

Henrique Barcelos

    ♪♫

  • Moderadores
  • 4.659 posts

Postado 03 agosto 2012 - 10:16

Acho que você está trocando as bolas. Seu controller faz o papel de model e sua view faz o papel de controller...
  • 1

#8 Vadio

Vadio

    EricRF

  • Membros
  • 825 posts

Postado 03 agosto 2012 - 15:28

Acho que você está trocando as bolas. Seu controller faz o papel de model e sua view faz o papel de controller...


eu sou principiante ainda

parti do seguinte principio modelo é o meu modelo de dados
meu controler fará a interação com o banco e
minha view irá mostrar minhas mensagens
  • 0

#9 Henrique Barcelos

Henrique Barcelos

    ♪♫

  • Moderadores
  • 4.659 posts

Postado 04 agosto 2012 - 00:00

meu controler fará a interação com o banco e

Não, quem faz interação com o banco de dados é o model.
O controller lida com as requisições, $_GET, $_POST, etc., decide qual view mostrar com base na requisição, etc...
  • 0

#10 Bruno Augusto

Bruno Augusto

    Sou Bobo Também ¬¬

  • Moderadores
  • 6.333 posts

Postado 04 agosto 2012 - 09:34

O problema é que quem tá começando tem certa dificuldade em enxergar que a Model meio que se divide em duas partes diferentes, a que lida diretamente com o BD e a que lida com a Entidade.

Não tenho certeza, porém, quanto aos nomes. :closedeyes:
  • 0




Publicidade

/ins>