Foros del Web » Programando para Internet » PHP »

PHP y Postgres no funcan sentencias sql

Estas en el tema de PHP y Postgres no funcan sentencias sql en el foro de PHP en Foros del Web. Saludos Mi problema es el siguiente: Resulta que tengo Postgres v9 instalado en windows, y una aplicación en PHP Migre la BD de MySQL a ...
  #1 (permalink)  
Antiguo 08/03/2011, 19:45
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guayaquil
Mensajes: 16
Antigüedad: 14 años, 3 meses
Puntos: 1
Pregunta PHP y Postgres no funcan sentencias sql

Saludos

Mi problema es el siguiente:
Resulta que tengo Postgres v9 instalado en windows, y una aplicación en PHP

Migre la BD de MySQL a Postgress y todo bien. La clase de conexion al parecer funciona bien el incoveniente es cuando mando a ejecutar los querys normalmente ejemplo 1:

SELECT nombre FROM persona WHERE id_persona = '1'


Me dice que hay un error pero en realidad cuando envío el query de la siguiente forma.

ejemplo 2:

SELECT nombre FROM nombre_bd.persona WHERE id_persona = '1'

Si funca, si fueran pocas cosas las de cambiar lo haría tranquilamente pero mi aplicación está desarrollada a manera de framework y es bastante (tedioso) odioso acomodarme a esa forma cuando he visto en internet muchos ejemplos
que funcionan tal y cual el ejemplo 1

A que se puede deber, alguien me pueda ayudar urgente!.
  #2 (permalink)  
Antiguo 08/03/2011, 22:43
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: PHP y Postgres no funcan sentencias sql

Como estas haciendo la conexion a tu base de datos?

Saludos
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 09/03/2011, 00:34
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guayaquil
Mensajes: 16
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: PHP y Postgres no funcan sentencias sql

normal, acá la clase BD practicamente..

private function conectar(){
$error1 = 'No se puede conectar a la BD.<br>> Server: '.$this->dbhost.'<br>> User: '.$this->dbuser.'<br>> Pass: '.$this->dbpass;
$error2 = 'La BD '.$this->dbname.' no existe';
if(!$this->activo){
$this->conexion = pg_connect("host=".$this->dbhost." port=".$this->dbport." password=".$this->dbpass." user=".$this->dbuser." dbname=".$this->dbname." ") or die(MSG_ERROR($error1));
pg_dbname($this->conexion) or die (MSG_ERROR($error2));
$this->activo=true;
}
}

private function Consulta($query){
$consulta = pg_query($this->conexion,$query) or die(MSG_ERROR('<b>Error en el Query</b><br>'.$query));
return $consulta;
}

Si se conecta el problema es cuando envio la consulta ejemplo


$BD = new BD();
$query = "SELECT nombre FROM persona WHERE usuario = '1'";
$BD->select($query);


La funcion select lo que hace es utilizar pg_query($this->conectar(),$query) pero llamando a Consulta, bueno eso siempre me ha funcionado con mysql lo que hice fue utilizar las funciones de POSTGRES de php.

que puede ser

psd: Sigo probando y acomodando manualmente el nombre de la base de datos al lado de la tabla, y ya me está cansando pues la aplicación es grande
  #4 (permalink)  
Antiguo 09/03/2011, 06:13
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Respuesta: PHP y Postgres no funcan sentencias sql

Si no quieres modificar cada uno de tus query, podrías hacer un reemplazo en tú método Consulta de tu clase DB, algo similar a

Código PHP:
$query str_replace(  array("nombre_db.","nombre2_db.") , array("","") , $query ); 
Eso si, el código anterior borraría todos las ocurrencias de esos strings, y lo más correcto sería limpiar esos string para el substring que se encuentra entre las sentencias FROM y WHERE, pero esto ya requiere un poco más de tiempo con una expresión regular.

Saludos
  #5 (permalink)  
Antiguo 09/03/2011, 10:48
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guayaquil
Mensajes: 16
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: PHP y Postgres no funcan sentencias sql

Me parece interesante ese método aunque no tuve mucho problema en un comienzo pues Mi método $BD->select() puede recibir 3 parametros: tabla, campos y condicion dentro de ese metodo envio a formar el query a otro metodo y ya le agregue el respectivo $this->dbname al lado del parametro tabla.

El problema es con los query que tengo armado INNER JOIN allí se me complicaría un poco más con la función que me recomiendas.

De todos modos gracias voy a probar para ver si me puede ir mejor.
  #6 (permalink)  
Antiguo 09/03/2011, 17:21
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: PHP y Postgres no funcan sentencias sql

Otra opcion es tratar de cambiar la funcion Consulta() por esto:
Código PHP:
private function Consulta($query,$params){
    
$consulta pg_prepare($this->conexion"Consulta"$query);
    
$consulta pg_execute($this->conexion"Consulta"$params);
    return 
$consulta;

Pero tendras que mandar todos los parametros a parte como arreglos:
Código PHP:
$BD = new BD();
$query "SELECT nombre FROM persona WHERE usuario = '$1'";
$params = array("1");
$BD->select($query,$params); 
Pero definitivamente tendras que cambiar algo... a menos que la configuracion de php tenga algo que ver.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Etiquetas: postgres, postgresql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:36.