Ir para conteúdo

POWERED BY:

Arquivado

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

youngrp

[Resolvido] Classe de Banco de Dados Mista

Recommended Posts

Olá,

 

Esta é minha primeira Classe e gostaria de compartilhar com vocês. Com ela é possível conectar, executar query e retornar resultados de Bancos de Dados Microsoft SQL Server e MySQL. Como sou iniciante em Class, se tiverem alguma dica de como melhora-la será bem vinda também.

 

Exemplo de uso:

<?php
require("class.inc.php");

$mssql_servidor = "200.200.200.200";
$mssql_usuario  = "sa";
$mssql_senha    = "senha";
$mssql_banco    = "banco";

$mysql_servidor = "127.0.0.1";
$mysql_usuario  = "root";
$mysql_senha    = "senha";
$mysql_banco    = "banco";

$db = new dbClass('mssql');
$db2 = new dbClass('mysql');

$db->query("SELECT TOP 10 * FROM tabela");

while ($resultado = $db->result('array')) {
	echo $resultado[0] . "<br>";
}

$db2->query("SELECT * FROM tabela LIMIT 10");

while ($resultado2 = $db2->result('object')) {
	echo $resultado2->coluna . "<br>";
}

$db->close();
$db2->close();
?>

class.inc.php:

<?php
class dbClass {
	private	$db_type,
			$db_host,
			$db_user,
			$db_pass,
			$db_dbase,
			$db_link,
			$db_query;
	
	private function fatalerror($err_type) {
		if ($err_type == 1) die('Erro ao conectar no Servidor SQL !');
		elseif ($err_type == 2) die('Erro ao selecionar o Banco de Dados !');
		elseif ($err_type == 3) die('Tipo de Banco de Dados não suportado !');
		else die('Erro desconhecido !');
	}
	
	public function __construct($db_type) {
		$this->db_type = $db_type;
		$this->connect();
	}
	
	public function connect() {
		if ($this->db_type == 'mssql') {
			$this->db_host = $GLOBALS['mssql_servidor'];
			$this->db_user = $GLOBALS['mssql_usuario'];
			$this->db_pass = $GLOBALS['mssql_senha'];
			$this->db_dbn  = $GLOBALS['mssql_banco'];
			
			if (!$this->db_link = @mssql_connect($this->db_host, $this->db_user, $this->db_pass)) $this->fatalerror(1);
			if (!@mssql_select_db($this->db_dbn, $this->db_link)) $this->fatalerror(2);
		}
		elseif ($this->db_type == 'mysql') {
			$this->db_host = $GLOBALS['mysql_servidor'];
			$this->db_user = $GLOBALS['mysql_usuario'];
			$this->db_pass = $GLOBALS['mysql_senha'];
			$this->db_dbn  = $GLOBALS['mysql_banco'];
			
			if (!$this->db_link = @mssql_connect($this->db_host, $this->db_user, $this->db_pass)) $this->fatalerror(1);
			if (!@mssql_select_db($this->db_dbn, $this->db_link)) $this->fatalerror(2);
		}
		else $this->fatalerror(3);
	}
	
	public function query($query) {
		if ($this->db_type == 'mssql') $this->db_query = mssql_query($query, $this->db_link);
		elseif ($this->db_type == 'mysql') $this->db_query = mysql_query($query, $this->db_link);
		else $this->fatalerror(3);
	}
	
	public function result($res_type = NULL) {
		if ($this->db_type == 'mssql') {
			if ($res_type == 'object') return mssql_fetch_object($this->db_query);
			elseif ($res_type == 'array') return mssql_fetch_array($this->db_query);
			elseif ($res_type == 'row') return mssql_fetch_row($this->db_query);
			else mssql_rows_affected($this->db_query);
			
			mssql_free_result($this->db_query);
		}
		elseif ($this->db_type == 'mysql') {
			if ($res_type == 'object') return mysql_fetch_object($this->db_query);
			elseif ($res_type == 'array') return mysql_fetch_array($this->db_query);
			elseif ($res_type == 'row') return mysql_fetch_row($this->db_query);
			else mysql_affected_rows($this->db_query);
			
			mysql_free_result($this->db_query);
		}
		else $this->fatalerror(3);
	}
	
	public function close() {
		if ($this->db_type == 'mssql') mssql_close($this->db_link);
		elseif ($this->db_type == 'mysql') mysql_close($this->db_link);
		else $this->fatalerror(3);
	}
}
?>

No exemplo acima, utilizamos as conexões MSSQL e MySQL simultâneamente sem complicações. Fiz duas queryes retornando 10 linhas da tabela, no MSSQL utilizei o fetch_array e no MySQL utilize o fetch_object.

 

Espero que gostem.

 

Até mais.

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.