henbran
(usa Debian)
Enviado em 30/11/2010 - 10:10h
http://php.net/manual/pt_BR/class.pdo.php
arquivo de conexao ao BD
============================================
<?php
class Banco {
public $con;
public $msg;
public $dC;
private $tipo = "mysql";
private $host = "localhost"; // IP do servidor de Banco de Dados
private $bd = "nomeDoBanco";
private $user = "loginDoBanco";
private $pass = "senhaDoBanco";
//========================================================================================
public function conectar() {
$this->tipoBd();
if ($this->con) {
try {
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$this->msg = "Erro de conexão com o banco de dados: Código: " . $e->getCode() . "Mensagem " . $e->getMessage() . "hora: " . date('H:i:s');
}
} else {
echo utf8_encode("Erro na definição PDO do banco de dados!");
exit;
}
}
//========================================================================================
private function tipoBd() {
try {
switch ($this->tipo) {
case "mysql":
try {
$this->con = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->bd, $this->user, $this->pass);
} catch (Exception $e) {
$this->msg = "Erro de conexão com o banco de dados MySql. " . $e->getMessage();
}
break;
case "pgsql":
$this->con = new PDO("pgsql:dbname={" . $this->bd . "};user={" . $this->user . "}; password={" . $this->pass . "};host=" . $this->host);
break;
case "oci8":
$tns = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . $this->host . ")(PORT=1521)))(CONNECT_DATA=(SID=" . $this->bd . ")))";
$this->con = new PDO("oci:dbname=" . $tns, $this->user, $this->pass, array(PDO::ATTR_PERSISTENT => true));
break;
case "mssql":
$this->con = new PDO("mssql:host={" . $this->host . "},1433;dbname={" . $this->bd . "}", $this->user, $this->pass);
break;
}
} catch (Exception $e) {
echo $e->getMessage();
exit;
}
}
}
?>
================================================
classes de comandos SQL (INSERT/DELETE/UPDATE/SELECT) e extração de retornos p/ formato xml
================================================
<?php
//echo "dccsd";exit;
/* DEFINIÇÃO DESTA CLASSE: Receber as strings básicas Sql e executar (select / insert / update / delete)
* setar o resultado das instruções sql executadas no atributo 'retorno' e ...
* de uma classe extendida dessa se pode gerar a string xml e ...
* exibir o xml
*/
require_once("Banco.php");
class cmdSQL {
public $Banco;
public $msg;
public $lastInsertId;
public $retorno;
public $rs;
public $sql;
public $xml;
public function __construct() {
}
//=================================================================================
public function pesquisar() { // inicio do function PESQUISAR
$this->Banco = new Banco();
$this->Banco->conectar();
try {
try // depende do resultado das instruções SQL a seguir
{
$this->rs = $this->Banco->con->prepare($this->sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); // ???????
unset ($this->sql);
$this->rs->execute(); //executa a instrução sql
$this->retorno[n_reg] = $this->rs->rowCount();
$this->retorno[n_cols] = $this->rs->columnCount();
if (($this->retorno[n_reg]) > 0) {
$this->retorno[res] = $this->rs->fetchAll(PDO::FETCH_ASSOC); //Retorna todas as linhas (registros) como um array
} else {
//Mensagem alertando que não econtrou registros
$this->msg = "Registro(s) não encontrado(s).";
}
$this->rs->closeCursor();
} catch (Exception $e) {
$this->msg = "\nErro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
} catch (Exception $exc) {
$this->msg = $this->msg . " <hr> " . $exc->getMessage();
}
return $this->retorno;
}
//=================================================================================
public function incluir() {
$this->Banco = new Banco();
$this->Banco->conectar();
if (isset($this->Banco->con)) {
try {
$this->rs = $this->Banco->con->prepare($this->sql);
$this->rs->execute();
$this->lastInsertId = $this->Banco->con->lastInsertId();
$this->msg = "Registro salvo com sucesso!";
} catch (Exception $e) {
$this->msg = "Erro de inclusão: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
}
return $this->retorno;
}
//=================================================================================
public function alterar() {
$this->Banco = new Banco();
$this->Banco->conectar();
if (isset($this->Banco->con)) {
try {
$this->rs = $this->Banco->con->prepare($this->sql);
$this->rs->execute();
$this->msg = 'Registro alterado com sucesso!';
} catch (Exception $e) {
$this->msg = "Erro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
}
return $this->retorno;
}
//=================================================================================
public function excluir() {
$this->Banco = new Banco();
$this->Banco->conectar();
if (isset($this->Banco->con)) {
try {
$this->rs = $this->Banco->con->prepare($this->sql);
$this->rs->execute();
$this->msg = 'Registro alterado com sucesso!';
} catch (Exception $e) {
$this->msg = "Erro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
}
return $this->retorno;
}
//=================================================================================
public function extraiArrayXml() {
try {
if ($this->retorno[res]) {
foreach ($this->retorno[res] as $lin) {
foreach ($lin as $k => $col) {
$linha .= "<" . $k . ">" . utf8_encode($col) . "</" . $k . ">";
}
}
$this->xml .= "<registros>" . $linha . "</registros>";
}
if ($this->retorno[n_reg])
$this->xml .= "<n_reg>" . $this->retorno[n_reg] . "</n_reg>";
if ($this->retorno[n_cols])
$this->xml .= " <msg> " . $this->retorno[n_cols] . " </msg>";
if ($this->lastInsertId)
$this->xml .= " <lastInsertId> " . $this->lastInsertId . " </lastInsertId>";
if ($this->msg)
$this->xml .= " <msg> " . $this->msg . " </msg>";
} catch (Exception $exc) {
echo "Erro de extração da Array para XML.<hr>" . $exc->getMessage();
}
}
//=================================================================================
public function exibeXml() {
try {
$this->xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><raiz>" . $this->xml . "</raiz>";
header("Content-type: application/xml");
return $this->xml;
} catch (Exception $exc) {
echo '<msg>Erro de montagem XML!!!<msg>' . $exc->getMessage();
}
}
}
?>
================================================
exemplo de classe p/ usar os recursos: Exemplo.php
<?php
require_once("cmdSql.php");
class Exemplo{
public $cmdSql;
public function testeSql(){
$this->cmdSql = new cmdSql();
$this->cmdSql->sql = "SELECT * FROM tabela";
$this->cmdSql->pesquisar();
if($this->cmdSql->retorno[n_reg]>0){
for($x=0;$this->cmdSql->retorno[res][$x];$x++){
echo $this->cmdSql->retorno[res][$x][nome]."<hr>";
}
}
}
}
$Exemplo = new Exemplo();
?>