Documentation TYPO3 par Ameos |
00001 <?php 00002 00003 /* 00004 V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jlim@natsoft.com.my). All rights reserved. 00005 Released under both BSD license and Lesser GPL library license. 00006 Whenever there is any discrepancy between the two licenses, 00007 the BSD license will take precedence. 00008 Set tabs to 8. 00009 00010 MySQL code that supports transactions. For MySQL 3.23 or later. 00011 Code from James Poon <jpoon88@yahoo.com> 00012 00013 Requires mysql client. Works on Windows and Unix. 00014 */ 00015 00016 // security - hide paths 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; // for Version 3.23.17 or later 00025 var $hasTransactions = true; 00026 var $autoRollback = true; // apparently mysql does not autorollback properly 00027 00028 function ADODB_mysqlt() 00029 { 00030 global $ADODB_EXTENSION; if ($ADODB_EXTENSION) $this->rsPrefix .= 'ext_'; 00031 } 00032 00033 function BeginTrans() 00034 { 00035 if ($this->transOff) return true; 00036 $this->transCnt += 1; 00037 $this->Execute('SET AUTOCOMMIT=0'); 00038 $this->Execute('BEGIN'); 00039 return true; 00040 } 00041 00042 function CommitTrans($ok=true) 00043 { 00044 if ($this->transOff) return true; 00045 if (!$ok) return $this->RollbackTrans(); 00046 00047 if ($this->transCnt) $this->transCnt -= 1; 00048 $this->Execute('COMMIT'); 00049 $this->Execute('SET AUTOCOMMIT=1'); 00050 return true; 00051 } 00052 00053 function RollbackTrans() 00054 { 00055 if ($this->transOff) return true; 00056 if ($this->transCnt) $this->transCnt -= 1; 00057 $this->Execute('ROLLBACK'); 00058 $this->Execute('SET AUTOCOMMIT=1'); 00059 return true; 00060 } 00061 00062 function RowLock($tables,$where='',$flds='1 as adodb_ignore') 00063 { 00064 if ($this->transCnt==0) $this->BeginTrans(); 00065 if ($where) $where = ' where '.$where; 00066 $rs =& $this->Execute("select $flds from $tables $where for update"); 00067 return !empty($rs); 00068 } 00069 00070 } 00071 00072 class ADORecordSet_mysqlt extends ADORecordSet_mysql{ 00073 var $databaseType = "mysqlt"; 00074 00075 function ADORecordSet_mysqlt($queryID,$mode=false) 00076 { 00077 if ($mode === false) { 00078 global $ADODB_FETCH_MODE; 00079 $mode = $ADODB_FETCH_MODE; 00080 } 00081 00082 switch ($mode) 00083 { 00084 case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break; 00085 case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break; 00086 00087 case ADODB_FETCH_DEFAULT: 00088 case ADODB_FETCH_BOTH: 00089 default: $this->fetchMode = MYSQL_BOTH; break; 00090 } 00091 00092 $this->adodbFetchMode = $mode; 00093 $this->ADORecordSet($queryID); 00094 } 00095 00096 function MoveNext() 00097 { 00098 if (@$this->fields = mysql_fetch_array($this->_queryID,$this->fetchMode)) { 00099 $this->_currentRow += 1; 00100 return true; 00101 } 00102 if (!$this->EOF) { 00103 $this->_currentRow += 1; 00104 $this->EOF = true; 00105 } 00106 return false; 00107 } 00108 } 00109 00110 class ADORecordSet_ext_mysqlt extends ADORecordSet_mysqlt { 00111 00112 function ADORecordSet_ext_mysqlt($queryID,$mode=false) 00113 { 00114 if ($mode === false) { 00115 global $ADODB_FETCH_MODE; 00116 $mode = $ADODB_FETCH_MODE; 00117 } 00118 switch ($mode) 00119 { 00120 case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break; 00121 case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break; 00122 00123 case ADODB_FETCH_DEFAULT: 00124 case ADODB_FETCH_BOTH: 00125 default: 00126 $this->fetchMode = MYSQL_BOTH; break; 00127 } 00128 $this->adodbFetchMode = $mode; 00129 $this->ADORecordSet($queryID); 00130 } 00131 00132 function MoveNext() 00133 { 00134 return adodb_movenext($this); 00135 } 00136 } 00137 00138 ?>