Jump to content
AprendendoC

[Resolvido] Ajuda com PDO

Recommended Posts

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??

Share this post


Link to post
Share on other 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);    

?>

Share this post


Link to post
Share on other 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.)

Share this post


Link to post
Share on other sites
AprendendoC

consegui resolver o meu problema era so colocar um $executa = $this->query($sql);

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.