00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 if (!defined('ADODB_DIR')) die();
00018
00019 include_once(ADODB_DIR."/drivers/adodb-mysql.inc.php");
00020
00021
00022 class ADODB_mysqlt extends ADODB_mysql {
00023 var $databaseType = 'mysqlt';
00024 var $ansiOuter = true;
00025 var $hasTransactions = true;
00026 var $autoRollback = true;
00027
00028 function ADODB_mysqlt()
00029 {
00030 global $ADODB_EXTENSION; if ($ADODB_EXTENSION) $this->rsPrefix .= 'ext_';
00031 }
00032
00033
00034
00035
00036
00037
00038
00039 function SetTransactionMode( $transaction_mode )
00040 {
00041 $this->_transmode = $transaction_mode;
00042 if (empty($transaction_mode)) {
00043 $this->Execute('SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
00044 return;
00045 }
00046 if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode;
00047 $this->Execute("SET SESSION TRANSACTION ".$transaction_mode);
00048 }
00049
00050 function BeginTrans()
00051 {
00052 if ($this->transOff) return true;
00053 $this->transCnt += 1;
00054 $this->Execute('SET AUTOCOMMIT=0');
00055 $this->Execute('BEGIN');
00056 return true;
00057 }
00058
00059 function CommitTrans($ok=true)
00060 {
00061 if ($this->transOff) return true;
00062 if (!$ok) return $this->RollbackTrans();
00063
00064 if ($this->transCnt) $this->transCnt -= 1;
00065 $this->Execute('COMMIT');
00066 $this->Execute('SET AUTOCOMMIT=1');
00067 return true;
00068 }
00069
00070 function RollbackTrans()
00071 {
00072 if ($this->transOff) return true;
00073 if ($this->transCnt) $this->transCnt -= 1;
00074 $this->Execute('ROLLBACK');
00075 $this->Execute('SET AUTOCOMMIT=1');
00076 return true;
00077 }
00078
00079 function RowLock($tables,$where='',$flds='1 as adodb_ignore')
00080 {
00081 if ($this->transCnt==0) $this->BeginTrans();
00082 if ($where) $where = ' where '.$where;
00083 $rs =& $this->Execute("select $flds from $tables $where for update");
00084 return !empty($rs);
00085 }
00086
00087 }
00088
00089 class ADORecordSet_mysqlt extends ADORecordSet_mysql{
00090 var $databaseType = "mysqlt";
00091
00092 function ADORecordSet_mysqlt($queryID,$mode=false)
00093 {
00094 if ($mode === false) {
00095 global $ADODB_FETCH_MODE;
00096 $mode = $ADODB_FETCH_MODE;
00097 }
00098
00099 switch ($mode)
00100 {
00101 case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
00102 case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
00103
00104 case ADODB_FETCH_DEFAULT:
00105 case ADODB_FETCH_BOTH:
00106 default: $this->fetchMode = MYSQL_BOTH; break;
00107 }
00108
00109 $this->adodbFetchMode = $mode;
00110 $this->ADORecordSet($queryID);
00111 }
00112
00113 function MoveNext()
00114 {
00115 if (@$this->fields = mysql_fetch_array($this->_queryID,$this->fetchMode)) {
00116 $this->_currentRow += 1;
00117 return true;
00118 }
00119 if (!$this->EOF) {
00120 $this->_currentRow += 1;
00121 $this->EOF = true;
00122 }
00123 return false;
00124 }
00125 }
00126
00127 class ADORecordSet_ext_mysqlt extends ADORecordSet_mysqlt {
00128
00129 function ADORecordSet_ext_mysqlt($queryID,$mode=false)
00130 {
00131 if ($mode === false) {
00132 global $ADODB_FETCH_MODE;
00133 $mode = $ADODB_FETCH_MODE;
00134 }
00135 switch ($mode)
00136 {
00137 case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
00138 case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
00139
00140 case ADODB_FETCH_DEFAULT:
00141 case ADODB_FETCH_BOTH:
00142 default:
00143 $this->fetchMode = MYSQL_BOTH; break;
00144 }
00145 $this->adodbFetchMode = $mode;
00146 $this->ADORecordSet($queryID);
00147 }
00148
00149 function MoveNext()
00150 {
00151 return adodb_movenext($this);
00152 }
00153 }
00154
00155 ?>