--- /dev/null
+<?php
+
+include_once("MDB2.php");
+
+class mydb {
+
+ var $db = false;
+ var $error = false;
+ var $debug = true;
+ var $dbf = false;
+ var $database = false;
+
+ function mydb($host,$db,$user,$pass,$port,$proto,$error,$debug) {
+ $this->error = $error;
+ $dsn = array('phptype' => $proto,
+ 'username' => $user,
+ 'password' => $pass,
+ 'hostspec' => $host,
+ 'database' => $db,
+ 'port' => $port);
+ $this->debug = $debug;
+ $this->database = "-< $db >-";
+ $this->connect($dsn);
+ }
+
+ function connect($dsn) {
+ $options = array('result_buffering' => false,);
+ $this->db = MDB2::connect($dsn,$options);
+ if ( $this->debug ) $this->error->write('dblib->connect '.$this->database,'Connect:');
+ if (PEAR::isError($this->db)) {
+ $this->error->write('dblib->connect '.$this->database,$this->db->getMessage());
+ $this->error->write('dblib->connect '.$this->database,print_r($dsn,true));
+ $this->db = false;
+ return false;
+ }
+ $this->db->setFetchMode(MDB2_FETCHMODE_ASSOC);
+ }
+ function Begin() {
+ return $this->db->beginTransaction();
+ }
+ function Commit() {
+ return $this->db->commit();
+ }
+ function Rollback() {
+ return $this->db->rollback();
+ }
+
+ function getAll($sql) {
+ $rs = $this->db->queryAll($sql);
+ if ( $this->debug ) $this->error->write('dblib->getAll '.$this->database,$sql);
+ if (PEAR::isError($rs)) {
+ $this->error->write('dblib->getAll '.$this->database,$rs->getUserinfo());
+ return false;
+ }
+ return $rs;
+ }
+
+ function getOne($sql) {
+ $rs = $this->db->queryRow($sql);
+ if ( $this->debug ) $this->error->write('dblib->getOne '.$this->database,$sql);
+ if (PEAR::isError($rs)) {
+ $this->error->write('dblib->getOne '.$this->database,$rs->getUserinfo());
+ return false;
+ }
+ return $rs;
+ }
+ function query($sql) {
+ $rc = $this->db->query($sql);
+ if ( $this->debug ) $this->error->write('dblib->query '.$this->database,$sql);
+ if (PEAR::isError($rc)) {
+ $this->error->write('dblib->query '.$this->database,$rc->getUserinfo());
+ return false;
+ }
+ return $rc;
+ }
+ function insert($statement,$data) {
+ if ( $this->debug ) $this->error->write("dblib->insert ".$this->database,$statement);
+ $sth = $this->db->prepare($statement); //Prepare
+ if (PEAR::isError($sth)) {
+ $this->error->write('dblib->insert 1 '.$this->database,$sth->getMessage());
+ $this->error->write('dblib->insert 2',$sth->getUserinfo());
+ $this->rollback();
+ return false;
+ }
+ if ( $this->debug ) $this->error->write('dblib->insert',print_r($data,true));
+ $rc =& $sth->execute($data);
+ if (PEAR::isError($rc)) {
+ $this->error->write('dblib->insert 3 '.$this->database,$rc->getUserinfo());
+ $this->error->write('SQL ',$statement);
+ $this->error->write('Data ',print_r($data,true));
+ return false;
+ }//else{
+ // $rc = $this->commit();
+ //}
+ return $rc;
+ }
+ function update($statement,$data) {
+ if ( $this->debug ) $this->error->write("dblib->update ".$this->database,$statement);
+ $sth = $this->db->prepare($statement); //Prepare
+ if (PEAR::isError($sth)) {
+ $this->error->write('dblib->update 1 '.$this->database,$sth->getMessage());
+ $this->error->write('dblib->update 2',$sth->getUserinfo());
+ $this->rollback();
+ return false;
+ }
+ if ( $this->debug ) $this->error->write('dblib->insert',print_r($data,true));
+ $rc =& $sth->execute($data);
+ if (PEAR::isError($rc)) {
+ $this->error->write('dblib->update 3 '.$this->database,$rc->getUserinfo());
+ return false;
+ }//else{
+ // $rc = $this->commit();
+ //}
+ return $rc;
+ }
+ function insertMultipe($statement,$data) {
+ $this->db->loadModule('Extended');
+ if (!$this->db->supports('transactions')){
+ return false;
+ }
+ $sth = $this->db->prepare($statement); //Prepare
+ if (PEAR::isError($sth)) {
+ $this->error->write('dblib->insertMultiple '.$this->database,$sth->getMessage());
+ $this->rollback();
+ return false;
+ }
+ $rc =& $this->db->beginTransaction();
+ $rc =& $this->db->extended->executeMultiple($sth, $data);
+ if (PEAR::isError($rc)) {
+ $this->error->write('dblib->insertMultiple '.$this->database,$rc->getUserinfo());
+ $this->rollback();
+ return false;
+ }else{
+ $rc = $this->commit();
+ }
+ return $rc;
+ }
+}
+
+?>