[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Phpgroupware-cvs] api/db/drivers/adodb-odbtp.inc.php, 1.1.2.1
From: |
nomail |
Subject: |
[Phpgroupware-cvs] api/db/drivers/adodb-odbtp.inc.php, 1.1.2.1 |
Date: |
Thu, 20 May 2004 16:49:03 -0000 |
Update of /api/db/drivers
Added Files:
Branch: proposal-branch
adodb-odbtp.inc.php
date: 2004/04/16 20:59:49; author: seek3r; state: Exp; lines: +339 -0
Log Message:
bringing savannah cvs back up to date with what we were doing on our private
cvs server. We will not be doing dev from this cvs tree
=====================================================================
No syntax errors detected in -
=====================================================================
<?php
/*
V4.21 20 Mar 2004 (c) 2000-2004 John Lim (address@hidden). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence. See License.txt.
Set tabs to 4 for best viewing.
Latest version is available at http://php.weblogs.com/
*/
// Code contributed by "stefan bogdan" <sbogdan#rsb.ro>
//odbtp adodb extension
class ADODB_odbtp extends ADOConnection{
var $databaseType = "odbtp";
var $fmtDate = "'Y-m-d'";
var $fmtTimeStamp = "'Y-m-d, h:i:sA'";
var $replaceQuote = "''"; // string to use to replace quotes
var $dataProvider = "odbtp";
var $odbc_driver ='';
var $hasAffectedRows = true;
var $_genSeqSQL = "create table %s (id integer)";
var $_autocommit = true;
function ADODB_odbtp()
{
}
function ErrorMsg()
{
if (empty($this->_connectionID)) return @odbtp_last_error();
return @odbtp_last_error($this->_connectionID);
}
function ErrorNo()
{
if (empty($this->_connectionID)) return
@odbtp_last_error_code();
return @odbtp_last_error_code($this->_connectionID);
}
function _affectedrows()
{
if ($this->lastQuery) {
return odbtp_affected_rows ($this->lastQuery);
} else
return 0;
}
function CreateSequence($seqname='adodbseq',$start=1)
{
if (empty($this->_genSeqSQL)) return false;
$ok = $this->Execute(sprintf($this->_genSeqSQL,$seqname));
if (!$ok) return false;
$start -= 1;
return $this->Execute("insert into $seqname values($start)");
}
var $_dropSeqSQL = 'drop table %s';
function DropSequence($seqname)
{
if (empty($this->_dropSeqSQL)) return false;
return $this->Execute(sprintf($this->_dropSeqSQL,$seqname));
}
function GenID($seq='adodbseq',$start=1)
{
// if you have to modify the parameter below, your database is
overloaded,
// or you need to implement generation of id's yourself!
$MAXLOOPS = 100;
//$this->debug=1;
while (--$MAXLOOPS>=0) {
$num = $this->GetOne("select id from $seq");
if ($num === false) {
$this->Execute(sprintf($this->_genSeqSQL
,$seq));
//if(!$this->Execute("CREATE TABLE $seq ".
// '(id INT NOT NULL UNIQUE)')) echo 'naspa la
creare tabela';
$start -= 1;
$num = '0';
$ok = $this->Execute("insert into $seq
values($start)");
if (!$ok) return false;
}
$this->Execute("update $seq set id=id+1 where id=$num");
if ($this->affected_rows() > 0) {
$num += 1;
$this->genID = $num;
return $num;
}
}
if ($fn = $this->raiseErrorFn) {
$fn($this->databaseType,'GENID',-32000,"Unable to
generate unique id after $MAXLOOPS attempts",$seq,$num);
}
return false;
}
//example for $argDSN
//for visual fox : DRIVER={Microsoft Visual FoxPro
Driver};SOURCETYPE=DBF;SOURCEDB=c:\YourDbfFileDir;EXCLUSIVE=NO;
//for access : DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=c:\path_to_access_db\base_test.mdb;UID=root;PWD=;
//for mssql : DRIVER={SQL
Server};SERVER=myserver;UID=myuid;PWD=mypwd;DATABASE=OdbtpTest;
//if uid & pwd can be separate
function _connect($argHost, $argUsername='', $argPassword='',
$argDSN='',$persist=false)
{
if ($argUsername) $argDSN .= ";uid=$argUsername";
if ($argPassword) $argDSN .= ";pwd=$argPassword";
if ($persist) $this->_connectionID =
@odbtp_rconnect($argHost,$argDSN);
else $this->_connectionID = @odbtp_connect($argHost,$argDSN);
if ($this->_connectionID === false)
{
$this->_errorMsg = $this->ErrorMsg() ;
return false;
}
$this->odbc_driver = @odbtp_get_attr(ODB_ATTR_DRIVER,
$this->_connectionID);
//$this->oic_level = @odbtp_get_attr(ODB_ATTR_OICLEVEL,
$this->_connectionID);
$tc = @odbtp_get_attr('ODB_ATTR_TXNCAPABLE', $this->_connectionID);
if($tc == 0){
$this->hasTransactions = false;
}
else {
$this->hasTransactions = true;
}
return true;
}
function BeginTrans()
{
if (!$this->hasTransactions) return false;
if ($this->transOff) return true;
$this->transCnt += 1;
$this->_autocommit = false;
$rs =
@odbtp_set_attr(ODB_ATTR_TRANSACTIONS,ODB_TXN_READUNCOMMITTED,$this->_connectionID);
if(!$rs) return false;
else return true;
}
function CommitTrans($ok=true)
{
if ($this->transOff) return true;
if (!$ok) return $this->RollbackTrans();
if ($this->transCnt) $this->transCnt -= 1;
$this->_autocommit = true;
@odbtp_set_attr(ODB_ATTR_TRANSACTIONS,ODB_TXN_READCOMMITTED,$this->_connectionID);//set
transaction off
$ret = odbtp_commit($this->_connectionID);
return $ret;
}
function RollbackTrans()
{
if ($this->transOff) return true;
if ($this->transCnt) $this->transCnt -= 1;
$this->_autocommit = true;
$ret = odbtp_rollback($this->_connectionID);
@odbtp_set_attr(ODB_ATTR_TRANSACTIONS,ODB_TXN_READCOMMITTED,$this->_connectionID);//set
transaction off
return $ret;
}
function Prepare($sql)
{
// return $sql;
$stmt = odbtp_prepare($sql);
if (!$stmt) return false;
return array($sql,$stmt);
}
function _pconnect($argHost, $argUsername='', $argPassword='',
$argDSN='')
{
return
$this->_connect($argHost,$argUsername,$argPassword,$argDSN,true);
}
function _close()
{
$ret = @odbtp_close($this->_connectionID);
$this->_connectionID = false;
return $ret;
}
function _query($sql,$inputarr=false)
{
GLOBAL $php_errormsg;
$php_errormsg = '';
$this->_error = '';
if ($inputarr) {
if (is_array($sql)) {
$stmtid = $sql[1];
} else {
$stmtid =
odtp_prepare($sql,$this->_connectionID);
if ($stmtid == false) {
$this->_errorMsg = $php_errormsg;
return false;
}
}
if (! odbtp_execute($stmtid,$inputarr)) {
return false;
}
} else if (is_array($sql)) {
$stmtid = $sql[1];
if (!odbtp_execute($stmtid)) {
return false;
}
} else
{
$stmtid = odbtp_query($sql,$this->_connectionID);
}
$this->_lastAffectedRows = 0;
if ($stmtid) {
$this->_lastAffectedRows =
odbtp_affected_rows($stmtid);
}
$this->_errorMsg = $php_errormsg;
return $stmtid;
//return true;
}
}
class ADORecordSet_odbtp extends ADORecordSet {
var $databaseType = 'odbtp';
var $canSeek = true;
function ADORecordSet_odbtp($queryID,$mode=false)
{
if ($mode === false) {
global $ADODB_FETCH_MODE;
$mode = $ADODB_FETCH_MODE;
}
$this->fetchMode = $mode;
$this->ADORecordSet($queryID);
//$this->_currentRow = 0;
}
function _seek($row)
{
return @odbtp_data_seek($this->_queryID, $row);
}
function &FetchField($fieldOffset = 0)
{
$off=$fieldOffset; // offsets begin at 0
$o= new ADOFieldObject();
$o->name = odbtp_field_name($this->_queryID,$off);
$o->type = odbtp_field_type($this->_queryID,$off);
strstr( PHP_OS, "WIN") ? $o->max_length =
odbtp_field_length($this->_queryID,$off): $o->max_length = 'unknown';
if (ADODB_ASSOC_CASE == 0) $o->name = strtolower($o->name);
else if (ADODB_ASSOC_CASE == 1) $o->name = strtoupper($o->name);
return $o;
}
function fields($colname)
{
if ($this->fetchMode & ADODB_FETCH_ASSOC) return
$this->fields[$colname];
if (!$this->bind) {
$this->bind = array();
for ($i=0; $i < $this->_numOfFields; $i++) {
$o = $this->FetchField($i);
$this->bind[strtoupper($o->name)] = $i;
}
}
return $this->fields[$this->bind[strtoupper($colname)]];
}
function _initrs()
{
$this->_numOfRows = -1; //odbtp_num_rows - odbtp_num_rows --
get number of fetched rows from query ;
$this->_numOfFields = odbtp_num_fields($this->_queryID);
}
function _fetch()
{
$f = odbtp_fetch_row($this->_queryID);
if ($f === false) {
$this->fields = false;
return false;
}
$this->fields = $f;
if ($this->fetchMode & ADODB_FETCH_ASSOC) {
$this->fields = $this->GetRowAssoc(ADODB_ASSOC_CASE);
}
// print_r($f);
//return $stmtid;
return true;
/*
global $ADODB_FETCH_MODE;
if ($this->fetchMode & ADODB_FETCH_ASSOC) {
echo 'am luat-o pe assoc';
$f = odbtp_fetch_assoc($this->_queryID);
//$this->fields = $this->GetRowAssoc(ADODB_ASSOC_CASE);
if ($f === false) {
$this->fields = false;
return false;
}
}
else
{
$f = @odbtp_fetch_row($this->_queryID);
if ($f === false) {
$this->fields = false;
return false;
}
$this->fields = $f;
}*/
print_r($f);
return true;
}
function MoveFirst()
{
$this->fields = @odbtp_fetch_row($this->_queryID, "ODB_FETCH_FIRST");
if ($this->fields) $this->EOF = false;
$this->_currentRow = 0;
if ($this->fetchMode == ADODB_FETCH_NUM) {
foreach($this->fields as $v) {
$arr[] = $v;
}
$this->fields = $arr;
}
return true;
}
function MoveLast()
{
$this->fields = @odbtp_fetch_row($this->_queryID, "ODB_FETCH_LAST");
if ($this->fields) $this->EOF = false;
$this->_currentRow = -1;
if ($this->fetchMode == ADODB_FETCH_NUM) {
foreach($this->fields as $v) {
$arr[] = $v;
}
$this->fields = $arr;
}
return true;
}
function NextRecordSet($result)
{
return @odbtp_next_result($result);
}
function _close()
{
return @odbtp_free_query($this->_queryID);
}
}
?>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] api/db/drivers/adodb-odbtp.inc.php, 1.1.2.1,
nomail <=