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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.