Ir para o conteúdo
AprendendoC

[Resolvido] Ajuda com PDO

Mensagens Recomendadas

AprendendoC

Buenas galera!!

bem e o seguinte to criando uma classe para conexao com a base de dados em pdo, mas agora empenhei e nao to conseguindo achar uma forma como fazer a inserção no banco...

<?php
class Banco extends PDO{
	private $database = 'mysql';
	private $host = 'localhost';
	private $dbname = 'nomedobanco';
	private $user = 'root';
	private $pass = '';
	public $conexao = NULL;

	//métodos
	function __construct(){
		$this->conecta();
	}// construct

	function __destruct(){
		$this->conexao = NULL;
	}// destruct

	function conecta(){
		try{
			$con = parent:: __construct($this->database.':dbname='.$this->dbname.';host='.$this->host, $this->user, $this->pass);
			$this->conexao = $con;
			return $this->conexao;
		}catch(PDOException $e){
			echo 'Erro ao conectar'. $e->getMessage();
			return FALSE;
		}
	}// conecta

	public function insert($dado){
		// INSERT INTO tabela (campo1) VALUES (valor1)
		$sql = "INSERT INTO ".$dado->tabela." (";
		for($i = 0; $i < count($dado->campoValores); $i++):
			$sql .=key($dado->campoValores);
			next($dado->campoValores);
			if($i < (count($dado->campoValores)-1)):
				$sql .= ", ";
			else:
				$sql .=") ";
			endif;
		endfor;
		reset($dado->campoValores);
		$sql .= "VALUES (";
		for($i = 0; $i < count($dado->campoValores); $i++):
			is_numeric($dado->campoValores[key($dado->campoValores)]) ?
			$dado->campoValores[key($dado->campoValores)] :
			"'".$dado->campoValores[key($dado->campoValores)]."'";
			if($i < (count($dado->campoValores) - 1)):
				$sql .= ", ";
			else:
				$sql .= ") ";
			endif;
			next($dado->campoValores);
		endfor;
		echo $sql;
		$this->prepare($sql);
		return $this->executaSQL($sql);
	}// insert
} // classe banco

o problema e que nao to conseguindo implementa o jeito de inserção do pdo na função de inserção que crie..

alguem tem alguma ideia??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Icepick.pt

Acho que estás a complicar um bocado uma coisa que é simples, a começar por um alargamento à própria classe PDO. Sou um bocado avesso à OOP e sempre ouvi dizer que não é boa prática alargar classes de outras pessoas, em particular as que têm algum nível de complexidade (como é o caso do PDO, que para mais faz parte do core do PHP).

Se queres código recorrente para escrever na BD, acho melhor utilizares uma função simples.

A que se segue funciona perfeitamente.

<?php

function escreveBaseDados($sqlUpdate){
   // ligar à base de dados
   try {
       $dbh = new PDO('mysql:host=localhost; dbname=baseDados', 'username', 'password');
       }
   catch (PDOException $e) {
       print "Erro na ligação à base de dados!";
       die();
       }    
   // testa o SQL
   if($pedido=$dbh->prepare($sqlUpdate) ) {        
       // escreve
       if ($pedido->execute()){echo "O seu registo foi alterado com sucesso.";}
       else {echo "Não foi possivel alterar o seu registo. Erro indeterminado!";}
       }
   // se o SQL falhou
   else{
       echo "Existe um problema com o seu SQL";
       }
   }

// a instrução de sql
$stringUpdate="update qualquer_coisa...";

escreveBaseDados($stringUpdate);    

?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Sou um bocado avesso à OOP e sempre ouvi dizer que não é boa prática alargar classes de outras pessoas, em particular as que têm algum nível de complexidade (como é o caso do PDO, que para mais faz parte do core do PHP).

Tens alguma referência que pudesses indicar?

Da minha perspectiva, isso vai um pouco contra a ideia de OOP, e nunca li nada a recomendar a não extensão de classes. (Mas concordo que é preciso algum cuidado quando se estende classes, para garantir que o contrato da super-classe é respeitado.)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.