| |||
Duda sobre compatibilidad entre php 5.3 y postgres 8.4 Buenas queria saber si php 5.3 y postgres 8.4 para debian 6 squeeze son compatibles es que estoy haciendo una migracion y se me genera un error el postgres y queria saber si estoy seguir perdiendo el tiempo. :D |
| |||
Respuesta: Duda sobre compatibilidad entre php 5.3 y postgres 8.4 Son dos que son los que siempre salen 1) pg_query(): Query failed: ERROR: el operador no existe: d_historia = integer LINE 3: where nro_historia =-1 ^ HINT: Ning�n operador coincide con el nombre y el tipo de los argumentos. Puede desear agregar conversiones expl�citas de tipos. pg_query(): Query failed: ERROR: OFFSET no debe ser negativo |
| |||
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); } } ?> |
Etiquetas: |