You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
5.8 KiB
240 lines
5.8 KiB
<?php
|
|
|
|
/*****************************************************************************
|
|
.::. PostgreClass .::.
|
|
@Autor: Aldrin Echeverry Higgins -- @Modificado por: Federico A. Ocampo
|
|
@Email: aldrin@adanetwork.net -- federico@mcanet.com.ar
|
|
@Empresa: Ada Network -- MCAnet
|
|
@Descripcion: Una Clase diseniada con los conceptos de POO en PHP.
|
|
@Version: 1.1
|
|
*****************************************************************************/
|
|
class PostgreClass
|
|
{
|
|
//Atributos Basicos de la clase
|
|
var $servidor; //Nombre de la maquina donde se encuentra la BD generalmente es localhost
|
|
var $nombreBD; //Nombre de la Base de Datos
|
|
var $nombreDeUsuario; //Nombre del usuario autorizado para entrar a la Base de Datos
|
|
var $contrasena; //Contraseña del Usuario
|
|
|
|
//Atributos Modificados
|
|
var $enlace;//Almacena el enlace con la Base de Datos una vez establecido
|
|
var $resultado;//Almacena el resultado obtenido por la consulta a la BD
|
|
var $consulta;//Almacena la consulta realizada con el metodo consultaBD();
|
|
var $procesoCorrecto;
|
|
|
|
//Constructor de la Clase - Inicializa algunos atributos basicos
|
|
function PostgreClass($servidor,$nombreBD,$nombreDeUsuario,$contrasena)
|
|
{
|
|
$this->servidor = $servidor;
|
|
$this->nombreBD = $nombreBD;
|
|
$this->nombreDeUsuario = $nombreDeUsuario;
|
|
$this->contrasena = $contrasena;
|
|
}
|
|
|
|
//---------------Metodos y Procedimientos----------------
|
|
//conectarBD(); Te permite conectar y enlazar la BD, el enlace a
|
|
//la BD es almacenado modificando el atributo $enlace
|
|
function conectarBD()
|
|
{
|
|
$retConexionExitosa = true;
|
|
|
|
$this->enlace=pg_connect(" host = ". $this->servidor .
|
|
" user = ". $this->nombreDeUsuario .
|
|
" password = ". $this->contrasena .
|
|
" dbname = ". $this->nombreBD .
|
|
" port = 5432");
|
|
|
|
//Si la conexion fue exitosa
|
|
if(!$this->enlace)
|
|
{
|
|
$retConexionExitosa = false;
|
|
}
|
|
|
|
return $retConexionExitosa;
|
|
}
|
|
|
|
//consultarBD() permite realizar consultas en la BD enlazada
|
|
function consultarBD($sentenciaSQL)
|
|
{
|
|
$retConsultaExitosa = true;
|
|
|
|
if(!function_exists("pg_query")){
|
|
$this->consulta = pg_exec($this->enlace,$sentenciaSQL);
|
|
}
|
|
else{
|
|
$this->consulta = pg_query($this->enlace,$sentenciaSQL);
|
|
}
|
|
if(!$this->consulta){
|
|
$retConsultaExitosa = false;
|
|
}
|
|
|
|
return $retConsultaExitosa;
|
|
}
|
|
|
|
//Devuelve los resultados de una fila dada en forma de arreglo asociativo
|
|
function obtenerFilaArray($fila)
|
|
{
|
|
$this->resultado = pg_fetch_array($this->consulta, $fila);
|
|
return $this->resultado;
|
|
}
|
|
|
|
//Devuelve todas las filas del resultados en un arreglo asociativo
|
|
function obtenerTotalFilasArray()
|
|
{
|
|
//Comprueba si en la version de PHP actual existe la funcion pg_fetch_all. Si no usa una implem. propia
|
|
if (!function_exists("pg_fetch_all")){
|
|
$this->pg_fetch_all_Aux($this->consulta,"assoc");
|
|
}
|
|
else{
|
|
$this->resultado = pg_fetch_all($this->consulta);
|
|
}
|
|
return $this->resultado;
|
|
}
|
|
|
|
|
|
function pg_fetch_all_Aux($res, $kind="assoc")
|
|
{
|
|
$i = 0; // this is needed for the row integer in the looped pg_fetch_array
|
|
$array_out = NULL;
|
|
if ($kind == "assoc")
|
|
{
|
|
while ($row = pg_fetch_array($res, $i, PGSQL_ASSOC))
|
|
{
|
|
$array_out[] = $row;
|
|
$i++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
while ($row = pg_fetch_array($res))
|
|
{
|
|
$array_out[] = $row;
|
|
}
|
|
}
|
|
|
|
$this->resultado = $array_out;
|
|
return $this->resultado;
|
|
}
|
|
|
|
function obtenerConsulta()
|
|
{
|
|
return $this->consulta;
|
|
}
|
|
|
|
function insertarRegistro($sentenciaSQL)
|
|
{
|
|
pg_query($this->enlace,$sentenciaSQL);
|
|
}
|
|
|
|
function cantidadFilasResultado()
|
|
{
|
|
return pg_numrows($this->consulta);
|
|
}
|
|
|
|
function cantidadCamposResultado()
|
|
{
|
|
return pg_numfields($this->consulta);
|
|
}
|
|
|
|
|
|
//libera el contenido del atributo que almacena las consultas
|
|
function liberarConsulta()
|
|
{
|
|
pg_freeresult($this->consulta);
|
|
}
|
|
|
|
function desconectarBD()
|
|
{
|
|
pg_close($this->enlace);
|
|
}
|
|
|
|
|
|
function Begin_Transaction()
|
|
{
|
|
$SQL_BEGIN = 'BEGIN;';
|
|
|
|
$this->procesoCorrecto = true;
|
|
$procesoCorrect=$this->conectarBD();
|
|
if($procesoCorrect)
|
|
{
|
|
$procesoCorrect = $this->consultarBD($SQL_BEGIN);
|
|
if($procesoCorrect)
|
|
{
|
|
$ret_datos = $this->obtenerTotalFilasArray();
|
|
$this->procesoCorrecto = true;
|
|
}
|
|
else
|
|
$this->procesoCorrecto = false;
|
|
|
|
$this->liberarConsulta();
|
|
$this->desconectarBD();
|
|
}
|
|
else
|
|
$this->procesoCorrecto = false;
|
|
|
|
return $ret_datos;
|
|
}
|
|
|
|
/**
|
|
* Termina un bloque de transaccion
|
|
* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function End_Transaction()
|
|
{
|
|
$SQL_END = 'COMMIT;';
|
|
|
|
$this->procesoCorrecto = true;
|
|
$procesoCorrect=$this->conectarBD();
|
|
if($procesoCorrect)
|
|
{
|
|
$procesoCorrect = $this->consultarBD($SQL_BEGIN);
|
|
if($procesoCorrect)
|
|
{
|
|
$ret_datos = $this->obtenerTotalFilasArray();
|
|
$this->procesoCorrecto = true;
|
|
}
|
|
else
|
|
$this->procesoCorrecto = false;
|
|
|
|
$this->liberarConsulta();
|
|
$this->desconectarBD();
|
|
}
|
|
else
|
|
$this->procesoCorrecto = false;
|
|
|
|
return $ret_datos;
|
|
}
|
|
|
|
/**
|
|
* Vuelve atras las operaciones de un bloque de transaccion
|
|
* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function Rollback_Transaction()
|
|
{
|
|
$SQL_END = 'ROLLBACK;';
|
|
|
|
$this->procesoCorrecto = true;
|
|
$procesoCorrect=$this->conectarBD();
|
|
if($procesoCorrect)
|
|
{
|
|
$procesoCorrect = $this->consultarBD($SQL_BEGIN);
|
|
if($procesoCorrect)
|
|
{
|
|
$ret_datos = $this->obtenerTotalFilasArray();
|
|
$this->procesoCorrecto = true;
|
|
}
|
|
else
|
|
$this->procesoCorrecto = false;
|
|
|
|
$this->liberarConsulta();
|
|
$this->desconectarBD();
|
|
}
|
|
else
|
|
$this->procesoCorrecto = false;
|
|
|
|
return $ret_datos;
|
|
}
|
|
|
|
|
|
}//Fin de la Clase PostgreClass
|
|
?>
|