|
<?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;
|
|
}
|
|
}
|
|
|
|
?>
|