Respuesta: Duda sobre compatibilidad entre php 5.3 y postgres 8.4 Por cierto este es mi archivo postgres.php donde se me generan estos errores
<?php
/**
* Provee metodos necesarios para interactuar con PostgreSQL
*
*<br> Parametros del arreglo $parametros :
*<ul><li> $parametros["host"]
*<li> $parametros["user"]
*<br> $parametros["password"]
*<br> $parametros["database"]
*<br> $parametros["host"]
*<br> $parametros["port"]
*</ul>
*
* @author Sanny Alexander Sanchez
* @version 1.0
* @package xfm
* @dat 20060303
*/
class postgresql extends AbstractDBConnect {
private $dns;
private $user;
private $password;
private $cursor_type;
private $conn;
private $host;
private $port;
private $database;
private $encoding = '';
/**
* Constructor de la clase postgresql,
* invoca el constructor del padre, inicializa las variables, crea la conexión a PostgreSQL
*/
function __construct($parametros){
parent::__construct();
if ( !isset($parametros["user"]) ) throw new Exception("Parametro: user",1206);
if ( !isset($parametros["password"]) ) throw new Exception("Parametro: password",1206);
$this->host = $parametros["host"];
$this->port = $parametros["port"];
$this->database = $parametros["database"];
$this->password = $parametros["password"];
$this->user = $parametros["user"];
//Encoding??
if(array_key_exists('encoding',$parametros)){
$this->encoding = $parametros["encoding"];
} else {
$this->encoding = 'LATIN1';
}
if( ! $this->conn = pg_pconnect("host=".$this->host." port=".$this->port." dbname=".$this->database." user=".$this->user." password=".$this->password) )
throw new Exception("pg_pconnect(host=".$this->host." port=".$this->port." dbname=".$this->database." user=".$this->user." password=".$this->password.") no se puede realizar",100);
/*
if( ! $this->conn = pg_pconnect("host=".$this->host." port=".$this->port." dbname=".$this->database." user=".$this->user." password=".$this->password) )
throw new Exception("pg_pconnect(host=".$this->host." port=".$this->port." dbname=".$this->database." user=".$this->user." password=".$this->password.") no se puede realizar"
*/
if(!empty($this->encoding))
pg_set_client_encoding ($this->conn, $this->encoding);
/* incluir aqui iniciar session */
require_once('../../pg_connected.php');
}
/**
* Ejecuta código SQL, retorna un objeto DataSet con los resultados
*/
public function get($sql)
{
//echo "$sql<br>";
if (is_null($sql) || $sql =="") throw new Exception("",1203);
$result = pg_query($this->conn, $sql);
if ( is_null($result) ) throw new Exception("",1204);
$num_campos = pg_num_fields( $result );
/* comienza en 0 */
for($i = 0 ; $i < $num_campos ; $i++)
$this->dataset->append(pg_field_name($result,$i),pg_field_type($r esult,$i));
$r = 0;
if ( $num_rows = pg_num_rows( $result ) )
while ($row = pg_fetch_array( $result) ){
$r++;
$this->dataset->addNew();
$j = 0;
foreach($row as $key=>$value) {
if (!is_int($key)) {
$j++;
if( !$this->dataset->setValue_ind($j, $value))
throw new Exception("",1202);
}
}
}
$this->dataset->_de = $num_rows;
return $this->dataset;
}
public function getPage($sql,$sql2,$pag,$paso){
if (is_null($sql) || $sql =="") throw new Exception("",1203);
$inicio = ( ($pag - 1 ) * $paso ) + 0 ;
$fin = $inicio + $paso - 1;
/* arreglar esto */
$result = pg_query($this->conn, $sql2);
$row = pg_fetch_array( $result);
$num_rows_T = $row['count'];
// $num_rows_T = pg_num_rows( $result );
$sql .= ' limit '.$paso.' offset '.$inicio;
$result = pg_query($this->conn, $sql);
if ( is_null($result) ) throw new Exception($sql."<br>",1204);
$num_campos = pg_num_fields( $result );
/* comienza en 0 */
for($i = 0 ; $i < $num_campos ; $i++)
$this->dataset->append(pg_field_name($result,$i),pg_field_type($r esult,$i));
//$r = 0;
$k = 0;
if ( $num_rows = pg_num_rows( $result ) ){
$inicio = 0 ;
$fin = $num_rows;
while ($row = pg_fetch_array( $result) ){
$k++;
if ( $k < $inicio ) continue;
if ($k > $fin ) break;
$j = 0;
$this->dataset->addNew($k);
foreach($row as $key=>$value) {
if (!is_int($key)) {
$j++;
if( !$this->dataset->setValue_ind($j, $value))
throw new Exception("",1202);
}
}
}
}
$this->dataset->_de = $num_rows_T;
$this->dataset->_currentPage = $pag;
// $this->_pageSize = $paso;
$this->dataset->setPageSize( $paso );
return $this->dataset;
}
/**
* exec Ejecuta código SQL, retorna 1 ó 0
*/
public function exec($sql) {
if (is_null($sql) || $sql =="") throw new Exception("postgresql->(sql)",1203);
if( pg_query($this->conn, $sql) ) return(1);
else throw new Exception("<i>".$sql."</i><br> No se puede Ejecutar",1204);
}
/**
* Implementa una transacción, devuelve un arreglo contenedor de la cantidad de registros afectado por cada instrucción SQL en caso de ejecución completa y 0 en caso de error.
*/
public function execBacth($sqlVector){
if ( !is_array($sqlVector) || count($sqlVector) <= 0 ) throw new Exception("postgresql->execBacth(".$sqlVector."), no se puede ejecutar, debido a que el arreglo de cadenas SQL no existe o no tiene elementos",1208);
$arr = array();
pg_query($this->conn,"begin");
foreach($sqlVector as $var)
if ( ! $res = pg_query($this->conn,$var) ){
pg_query($this->conn,"rollback");
throw new Exception("",1204);
break;
} else {
$arr[] = pg_affected_rows($res);
}
pg_query($this->conn,"commit");
return($arr);
}
/**
* Increnta y retorna el contador de secuencia
*/
public function getSequence($str){
$cad = " select nextval( cast( (select secuencia_nom from xfm_gen_tablas where tabla='".$str."') as text) ) as num ;";
$cad .= " select currval( cast( (select secuencia_nom from xfm_gen_tablas where tabla='".$str."') as text) ) as num ;";
if( $result = pg_query($this->conn,$cad) ){
$row = pg_fetch_array( $result );
if( $row ) return $row['num'] ;
}
throw new Exception("postgresql->getSequence(): No se pudo ejecutar <br> No hay registro definido para la secuencia: <b>" . $str . "</b> en la tabla ".$seq,1204);
}
/*
* Aplica el escape de caracteres a una cadena a ser insertada
*/
public function escape_string($sql){
return pg_escape_string($this->conn,$sql);
}
/*
* Crea una sentencia preparada
*/
public function prepare($name,$sql){
if(pg_prepare($this->conn,$name,$sql) === false)
return false;
return true;
}
/*
* Ejecuta una sentencia preparada
*/
public function execute($name,$param){
if( pg_execute($this->conn,$l_name,$param) === false)
return false;
return true;
}
/**
* Destructor de la clase postgresql, elimina las variables, cierra la conexión con PostgreSQL
*/
function __destruct(){
unset($this->dns);
unset($this->user);
unset($this->password);
unset($this->cursor_type);
if ( isset($this->conn) ) pg_close($this->conn);
unset($this->conn);
unset($this->dataset);
}
}
?> |