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