[Openupload-svn-update] SF.net SVN: openupload:[98] trunk/lib/modules/db/pgsql.inc.php
Status: Beta
Brought to you by:
tsdogs
|
From: <ts...@us...> - 2008-10-31 16:41:14
|
Revision: 98
http://openupload.svn.sourceforge.net/openupload/?rev=98&view=rev
Author: tsdogs
Date: 2008-10-31 16:41:05 +0000 (Fri, 31 Oct 2008)
Log Message:
-----------
first pgsql db api implementation
Added Paths:
-----------
trunk/lib/modules/db/pgsql.inc.php
Added: trunk/lib/modules/db/pgsql.inc.php
===================================================================
--- trunk/lib/modules/db/pgsql.inc.php (rev 0)
+++ trunk/lib/modules/db/pgsql.inc.php 2008-10-31 16:41:05 UTC (rev 98)
@@ -0,0 +1,174 @@
+<?php
+
+
+/* to be implemented soon */
+
+class pgsqlDB extends dbBase {
+var $config;
+var $db;
+var $prefix;
+
+
+ function pgsqlDB($config = array()) {
+ $this->config = $config;
+ $this->prefix = $config['prefix'];
+ }
+
+ function init() {
+ $str = "host=".$this->config['host'];
+ $str .= " port=".($this->config['port']!=''?$this->config['port']:'5432');
+ $str .= " dbname=".$this->config['name'];
+ $str .= " user=".$this->config['user'];
+ $str .= " password=".$this->config['password'];
+ $this->db = pg_connect($str) or die('ERROR: connection to db failed!');
+ }
+
+ function newId($tbl,$field = 'id',$keys = array ()) {
+ $sql = 'SELECT max("'.$field.'") as newid FROM "'.$this->prefix.$tbl.'"';
+ if (count($keys)>0) {
+ $where = '';
+ foreach ($keys as $k => $v) {
+ if ($where != '') $where .= ' AND ';
+ $where .= '"'.$k.'"=\''.(pg_escape_string($v)).'\'';
+ }
+ $sql .= ' WHERE '.$where;
+ }
+ $res = pg_query($sql);
+ $newid = pg_fetch_assoc($res);
+ pg_free_result($res);
+ return $id['newid']+1;
+ }
+
+ function newRandomId($tbl,$field = 'id') {
+ $found = true;
+ while ($found) {
+ $id = randomName(30,30);
+ $sql = 'SELECT '.$field.' FROM "'.$this->prefix.$tbl.'" WHERE "'.$field.'"=\''.$id.'\'';
+ $res = pg_query($sql);
+ $found = pg_num_rows($res)>0;
+ pg_free_result($res);
+ }
+ return $id;
+ }
+
+ function count($tbl,$keys = array()) {
+ $sql = 'SELECT count(*) AS num FROM "'.$this->prefix.$tbl.'"';
+ if (count($keys)>0) {
+ $where = '';
+ foreach ($keys as $k => $v) {
+ if ($where != '') $where .= ' AND ';
+ $where .= '"'.$k.'"=\''.(pg_escape_string($v)).'\'';
+ }
+ $sql .= ' WHERE '.$where;
+ }
+ $res = pg_query($sql);
+ $row = pg_fetch_assoc($res);
+ pg_free_result($res);
+ return $row['num'];
+ }
+
+ function read($tbl,$keys = array(), $sort = array(), $limit = '', $assoc = array()) {
+ $sql = 'SELECT * FROM "'.$this->prefix.$tbl.'"';
+ if (count($keys)>0) {
+ $where = '';
+ foreach ($keys as $k => $v) {
+ if ($where != '') $where .= ' AND ';
+ $where .= '"'.$k.'"=\''.(pg_escape_string($v)).'\'';
+ }
+ $sql .= ' WHERE '.$where;
+ }
+ if (count($sort)>0) {
+ $sorting = '';
+ foreach ($sort as $s) {
+ if ($sorting!='') $sorting.=',';
+ $sorting .= $s;
+ }
+ $sql .= ' ORDER BY '.$sorting;
+ }
+ if ($limit != '') {
+ $l = explode(',',$limit);
+ $sql .= ' LIMIT '.$l[1].' OFFSET '.$l[0];
+ }
+ $res = pg_query($sql);
+ if (!$res) { die('query failed: '.$sql); }
+ $result = array();
+ while ($row = pg_fetch_assoc($res)) {
+ if (count($assoc)) { /* maybe there is a better way to do this? */
+ $str = '$result';
+ foreach ($assoc as $k) {
+ $str .= '[\''.$row[$k].'\']';
+ }
+ $str .= '=$row;';
+ eval($str);
+ } else {
+ $result[] = $row;
+ }
+ }
+ pg_free_result($res);
+ return $result;
+ }
+
+ function insert($tbl,$values,$fields = array()) {
+ $sql = 'INSERT INTO "'.$this->prefix.$tbl.'"';
+ $flist = '';
+ $vlist = '';
+ if (count($fields)>0) {
+ foreach ($fields as $f) {
+ if ($flist!='') $flist .= ',';
+ if ($vlist!='') $vlist .= ',';
+ $flist .= '"'.$f.'"';
+ $vlist .= '\''.pg_escape_string($values[$f]).'\'';
+ }
+ } else {
+ foreach ($values as $k => $v) {
+ if ($flist!='') $flist .= ',';
+ if ($vlist!='') $vlist .= ',';
+ $flist .= '"'.$k.'"';
+ $vlist .= '\''.pg_escape_string($v).'\'';
+ }
+ }
+ $sql .= ' ('.$flist.') VALUES ('.$vlist.')';
+ pg_query($sql) or die("ERROR: query failed: ".$sql);
+ }
+
+ function update($tbl,$values,$keys = array(),$fields = array()) {
+ $sql = 'UPDATE "'.$this->prefix.$tbl.'"';
+ $set = '';
+ if (count($fields)>0) {
+ foreach ($fields as $f) {
+ if ($set!='') $set .= ',';
+ $set .= '"'.$f.'"=\''.pg_escape_string($values[$f]).'\'';
+ }
+ } else {
+ foreach ($values as $k => $v) {
+ if ($set!='') $set .= ',';
+ $set .= '"'.$k.'"=\''.pg_escape_string($v).'\'';
+ }
+ }
+ $sql .= ' SET '.$set;
+ if (count($keys)>0) { /* should always be */
+ $where = '';
+ foreach ($keys as $k => $v) {
+ if ($where != '') $where .= ' AND ';
+ $where .= '"'.$k.'"=\''.pg_escape_string($v).'\'';
+ }
+ $sql .= ' WHERE '.$where;
+ }
+ pg_query($sql);
+ }
+
+ function delete($tbl,$keys = array()) {
+ $sql = 'DELETE FROM "'.$this->prefix.$tbl.'"';
+ if (count($keys)>0) {
+ $where = '';
+ foreach ($keys as $k => $v) {
+ if ($where != '') $where .= ' AND ';
+ $where .= '"'.$k.'"=\''.pg_escape_string($v).'\'';
+ }
+ $sql .= ' WHERE '.$where;
+ }
+ pg_query($sql);
+ }
+}
+
+?>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|