You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							203 lines
						
					
					
						
							4.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							203 lines
						
					
					
						
							4.8 KiB
						
					
					
				
								<?php
							 | 
						|
								/*
							 | 
						|
								V4.55 3 Jan 2005  (c) 2000-2005 John Lim (jlim@natsoft.com.my). 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.
							 | 
						|
								  Set tabs to 4.
							 | 
						|
								  
							 | 
						|
								  Currently unsupported: MetaDatabases, MetaTables and MetaColumns, and also inputarr in Execute.
							 | 
						|
								  Native types have been converted to MetaTypes.
							 | 
						|
								  Transactions not supported yet.
							 | 
						|
								*/ 
							 | 
						|
								
							 | 
						|
								// security - hide paths
							 | 
						|
								if (!defined('ADODB_DIR')) die();
							 | 
						|
								
							 | 
						|
								if (! defined("_ADODB_CSV_LAYER")) {
							 | 
						|
								 define("_ADODB_CSV_LAYER", 1 );
							 | 
						|
								
							 | 
						|
								include_once(ADODB_DIR.'/adodb-csvlib.inc.php');
							 | 
						|
								 
							 | 
						|
								class ADODB_csv extends ADOConnection {
							 | 
						|
									var $databaseType = 'csv';
							 | 
						|
									var $databaseProvider = 'csv';
							 | 
						|
									var $hasInsertID = true;
							 | 
						|
									var $hasAffectedRows = true;	
							 | 
						|
									var $fmtTimeStamp = "'Y-m-d H:i:s'";
							 | 
						|
									var $_affectedrows=0;
							 | 
						|
									var $_insertid=0;
							 | 
						|
									var $_url;
							 | 
						|
									var $replaceQuote = "''"; // string to use to replace quotes
							 | 
						|
									var $hasTransactions = false;
							 | 
						|
									var $_errorNo = false;
							 | 
						|
									
							 | 
						|
									function ADODB_csv() 
							 | 
						|
									{		
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									function _insertid()
							 | 
						|
									{
							 | 
						|
											return $this->_insertid;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									function _affectedrows()
							 | 
						|
									{
							 | 
						|
											return $this->_affectedrows;
							 | 
						|
									}
							 | 
						|
								  
							 | 
						|
								  	function &MetaDatabases()
							 | 
						|
									{
							 | 
						|
										return false;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									
							 | 
						|
									// returns true or false
							 | 
						|
									function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)
							 | 
						|
									{
							 | 
						|
										if (strtolower(substr($argHostname,0,7)) !== 'http://') return false;
							 | 
						|
										$this->_url = $argHostname;
							 | 
						|
										return true;	
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									// returns true or false
							 | 
						|
									function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)
							 | 
						|
									{
							 | 
						|
										if (strtolower(substr($argHostname,0,7)) !== 'http://') return false;
							 | 
						|
										$this->_url = $argHostname;
							 | 
						|
										return true;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
								 	function &MetaColumns($table) 
							 | 
						|
									{
							 | 
						|
										return false;
							 | 
						|
									}
							 | 
						|
										
							 | 
						|
										
							 | 
						|
									// parameters use PostgreSQL convention, not MySQL
							 | 
						|
									function &SelectLimit($sql,$nrows=-1,$offset=-1)
							 | 
						|
									{
							 | 
						|
									global $ADODB_FETCH_MODE;
							 | 
						|
									
							 | 
						|
										$url = $this->_url.'?sql='.urlencode($sql)."&nrows=$nrows&fetch=".
							 | 
						|
											(($this->fetchMode !== false)?$this->fetchMode : $ADODB_FETCH_MODE).
							 | 
						|
											"&offset=$offset";
							 | 
						|
										$err = false;
							 | 
						|
										$rs = csv2rs($url,$err,false);
							 | 
						|
										
							 | 
						|
										if ($this->debug) print "$url<br><i>$err</i><br>";
							 | 
						|
								
							 | 
						|
										$at = strpos($err,'::::');
							 | 
						|
										if ($at === false) {
							 | 
						|
											$this->_errorMsg = $err;
							 | 
						|
											$this->_errorNo = (integer)$err;
							 | 
						|
										} else {
							 | 
						|
											$this->_errorMsg = substr($err,$at+4,1024);
							 | 
						|
											$this->_errorNo = -9999;
							 | 
						|
										}
							 | 
						|
										if ($this->_errorNo) 
							 | 
						|
											if ($fn = $this->raiseErrorFn) {
							 | 
						|
												$fn($this->databaseType,'EXECUTE',$this->ErrorNo(),$this->ErrorMsg(),$sql,'');
							 | 
						|
											}
							 | 
						|
											
							 | 
						|
										if (is_object($rs)) {	
							 | 
						|
										
							 | 
						|
											$rs->databaseType='csv';		
							 | 
						|
											$rs->fetchMode = ($this->fetchMode !== false) ?  $this->fetchMode : $ADODB_FETCH_MODE;
							 | 
						|
											$rs->connection = &$this;
							 | 
						|
										}
							 | 
						|
										return $rs;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									// returns queryID or false
							 | 
						|
									function &_Execute($sql,$inputarr=false)
							 | 
						|
									{
							 | 
						|
									global $ADODB_FETCH_MODE;
							 | 
						|
									
							 | 
						|
										if (!$this->_bindInputArray && $inputarr) {
							 | 
						|
											$sqlarr = explode('?',$sql);
							 | 
						|
											$sql = '';
							 | 
						|
											$i = 0;
							 | 
						|
											foreach($inputarr as $v) {
							 | 
						|
								
							 | 
						|
												$sql .= $sqlarr[$i];
							 | 
						|
												if (gettype($v) == 'string')
							 | 
						|
													$sql .= $this->qstr($v);
							 | 
						|
												else if ($v === null)
							 | 
						|
													$sql .= 'NULL';
							 | 
						|
												else
							 | 
						|
													$sql .= $v;
							 | 
						|
												$i += 1;
							 | 
						|
									
							 | 
						|
											}
							 | 
						|
											$sql .= $sqlarr[$i];
							 | 
						|
											if ($i+1 != sizeof($sqlarr))	
							 | 
						|
												print "Input Array does not match ?: ".htmlspecialchars($sql);
							 | 
						|
											$inputarr = false;
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										$url =  $this->_url.'?sql='.urlencode($sql)."&fetch=".
							 | 
						|
											(($this->fetchMode !== false)?$this->fetchMode : $ADODB_FETCH_MODE);
							 | 
						|
										$err = false;
							 | 
						|
										
							 | 
						|
										
							 | 
						|
										$rs = csv2rs($url,$err,false);
							 | 
						|
										if ($this->debug) print urldecode($url)."<br><i>$err</i><br>";
							 | 
						|
										$at = strpos($err,'::::');
							 | 
						|
										if ($at === false) {		
							 | 
						|
											$this->_errorMsg = $err;
							 | 
						|
											$this->_errorNo = (integer)$err;
							 | 
						|
										} else {
							 | 
						|
											$this->_errorMsg = substr($err,$at+4,1024);
							 | 
						|
											$this->_errorNo = -9999;
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										if ($this->_errorNo) 
							 | 
						|
											if ($fn = $this->raiseErrorFn) {
							 | 
						|
												$fn($this->databaseType,'EXECUTE',$this->ErrorNo(),$this->ErrorMsg(),$sql,$inputarr);
							 | 
						|
											}
							 | 
						|
										if (is_object($rs)) {
							 | 
						|
											$rs->fetchMode = ($this->fetchMode !== false) ?  $this->fetchMode : $ADODB_FETCH_MODE;
							 | 
						|
											
							 | 
						|
											$this->_affectedrows = $rs->affectedrows;
							 | 
						|
											$this->_insertid = $rs->insertid;
							 | 
						|
											$rs->databaseType='csv';
							 | 
						|
											$rs->connection = &$this;
							 | 
						|
										}
							 | 
						|
										return $rs;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									/*	Returns: the last error message from previous database operation	*/	
							 | 
						|
									function ErrorMsg() 
							 | 
						|
									{
							 | 
						|
											return $this->_errorMsg;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									/*	Returns: the last error number from previous database operation	*/	
							 | 
						|
									function ErrorNo() 
							 | 
						|
									{
							 | 
						|
										return $this->_errorNo;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									// returns true or false
							 | 
						|
									function _close()
							 | 
						|
									{
							 | 
						|
										return true;
							 | 
						|
									}
							 | 
						|
								} // class
							 | 
						|
								
							 | 
						|
								class ADORecordset_csv extends ADORecordset {
							 | 
						|
									function ADORecordset_csv($id,$mode=false)
							 | 
						|
									{
							 | 
						|
										$this->ADORecordset($id,$mode);
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									function _close()
							 | 
						|
									{
							 | 
						|
										return true;
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								} // define
							 | 
						|
									
							 | 
						|
								?>
							 |