Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vadio

PDO statement

Recommended Posts

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();
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.