par hika - 2005-01-30 21:20:20
crée le 2004-09-16 12:58:16
pgsql.php
<?php
/*
PostgreSQL - Class connect.
Copyright (c) 2002,2003 Gilbert Cao (hika)
All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*************************************
Classe de connexion à la base PostgreSQL
*************************************/
Class Connect {
private $host;
private $user;
private $pwd;
private $db;
private $id;
function Connect($host, $user, $pwd, $db) {
/*****************
Constructeur
*****************/
$this->host = $host;
$this->user = $user;
$this->pwd = $pwd;
$this->db = $db;
$this->id = pg_connect((!is_null($this->host) ? "host=".$this->host." port=5432 " : "") . "user=".$this->user." password=".$this->pwd." dbname=".$db);
if ($this->id)
return true;
return false;
}
function QueryDB($query) {
/******************************************************
Spécif : Effectue la requête et retourne un resultset
Param : $query, la requête SQL
*******************************************************/
$result = pg_query($this->id, $query);
if ($result)
return $result;
return false;
}
function CountDB($query) {
/******************************************************
Spécif : Récupère le nombre de lignes d'une requête
Param : $query, la requête
******************************************************/
$result = $this->QueryDB($query);
if ($result)
return pg_num_rows($result);
else
return false;
}
function CountRowsDB($result) {
/******************************************************
Spécif : Récupère le nombre de lignes d'un resultset
Param : $result, le resultset
******************************************************/
if ($result)
return pg_num_rows($result);
else
return false;
}
function CountFieldsDB($result) {
/******************************************************
Spécif : Récupère le nombre de colonnes d'un resultset
Param : $result, le resultset
******************************************************/
if ($result)
return pg_num_fields($result);
else
return false;
}
function LastIndexDB($column, $table, $predicat="") {
$SQL = "SELECT max(".$column.") as maxval
FROM ".$table."
".$predicat.";";
$result = pg_query($this->id, $SQL);
return pg_fetch_result($result, 0, "maxval");
}
function SeekDB($result, $num_ligne) {
/*****************************************************
Spécif : Positionne le resultset à la ligne indiquée
Param : $result, le resultset
$num_ligne, le numéro de ligne
*****************************************************/
if ($this->CountRowsDB($result) <= $num_ligne)
return false;
return pg_result_seek($result, $num_ligne);
}
function CursorDB($result) {
/*******************************************
Spécif : Récupère une ligne d'un resultset
et retourne la ligne dans un vecteur
Param : $result, le resultset
*******************************************/
if ($result) {
$cur = pg_fetch_array($result);
if ($cur)
return $cur;
return false;
}
else
return false;
}
function FreeDB($result) {
/*******************************************
Spécif : Libère la mémoire
Param : $result, le resultset
*******************************************/
if ($result)
return pg_free_result($result);
else
return false;
}
function FieldsDB($result) {
/*******************************************
Spécif : Récupère un nom de colonne d'un resultset
et retourne les infos de colonne dans un objet
Param : $result, le resultset
*******************************************/
echo "Warning ! Connect.FieldsDB() not yet implemented for PostgreSQL !<br />";
return false;
}
function Disconnect() {
/*********************
Déconnexion
"Destructeur"
*********************/
@pg_close($this->id);
}
}
/* Connect */
/************************************/
?>
par hika - 2005-01-30 21:20:20
crée le 2004-09-16 12:58:16