📄 mdb2.php
字号:
/**
* sql comments
* @var array
* @access protected
*/
var $sql_comments = array(
array('start' => '--', 'end' => "\n", 'escape' => false),
array('start' => '/*', 'end' => '*/', 'escape' => false),
);
/**
* comparision wildcards
* @var array
* @access protected
*/
var $wildcards = array('%', '_');
/**
* column alias keyword
* @var string
* @access protected
*/
var $as_keyword = ' AS ';
/**
* warnings
* @var array
* @access protected
*/
var $warnings = array();
/**
* string with the debugging information
* @var string
* @access public
*/
var $debug_output = '';
/**
* determine if there is an open transaction
* @var bool
* @access protected
*/
var $in_transaction = false;
/**
* the smart transaction nesting depth
* @var int
* @access protected
*/
var $nested_transaction_counter = null;
/**
* the first error that occured inside a nested transaction
* @var MDB2_Error|bool
* @access protected
*/
var $has_transaction_error = false;
/**
* result offset used in the next query
* @var int
* @access protected
*/
var $offset = 0;
/**
* result limit used in the next query
* @var int
* @access protected
*/
var $limit = 0;
/**
* Database backend used in PHP (mysql, odbc etc.)
* @var string
* @access protected
*/
var $phptype;
/**
* Database used with regards to SQL syntax etc.
* @var string
* @access protected
*/
var $dbsyntax;
/**
* the last query sent to the driver
* @var string
* @access public
*/
var $last_query;
/**
* the default fetchmode used
* @var int
* @access protected
*/
var $fetchmode = MDB2_FETCHMODE_ORDERED;
/**
* array of module instances
* @var array
* @access protected
*/
var $modules = array();
/**
* determines of the PHP4 destructor emulation has been enabled yet
* @var array
* @access protected
*/
var $destructor_registered = true;
// }}}
// {{{ constructor: function __construct()
/**
* Constructor
*/
function __construct()
{
end($GLOBALS['_MDB2_databases']);
$db_index = key($GLOBALS['_MDB2_databases']) + 1;
$GLOBALS['_MDB2_databases'][$db_index] = &$this;
$this->db_index = $db_index;
}
// }}}
// {{{ function MDB2_Driver_Common()
/**
* PHP 4 Constructor
*/
function MDB2_Driver_Common()
{
$this->destructor_registered = false;
$this->__construct();
}
// }}}
// {{{ destructor: function __destruct()
/**
* Destructor
*/
function __destruct()
{
$this->disconnect(false);
}
// }}}
// {{{ function free()
/**
* Free the internal references so that the instance can be destroyed
*
* @return bool true on success, false if result is invalid
*
* @access public
*/
function free()
{
unset($GLOBALS['_MDB2_databases'][$this->db_index]);
unset($this->db_index);
return MDB2_OK;
}
// }}}
// {{{ function __toString()
/**
* String conversation
*
* @return string representation of the object
*
* @access public
*/
function __toString()
{
$info = get_class($this);
$info.= ': (phptype = '.$this->phptype.', dbsyntax = '.$this->dbsyntax.')';
if ($this->connection) {
$info.= ' [connected]';
}
return $info;
}
// }}}
// {{{ function errorInfo($error = null)
/**
* This method is used to collect information about an error
*
* @param mixed error code or resource
*
* @return array with MDB2 errorcode, native error code, native message
*
* @access public
*/
function errorInfo($error = null)
{
return array($error, null, null);
}
// }}}
// {{{ function &raiseError($code = null, $mode = null, $options = null, $userinfo = null)
/**
* This method is used to communicate an error and invoke error
* callbacks etc. Basically a wrapper for PEAR::raiseError
* without the message string.
*
* @param mixed integer error code, or a PEAR error object (all other
* parameters are ignored if this parameter is an object
* @param int error mode, see PEAR_Error docs
* @param mixed If error mode is PEAR_ERROR_TRIGGER, this is the
* error level (E_USER_NOTICE etc). If error mode is
* PEAR_ERROR_CALLBACK, this is the callback function,
* either as a function name, or as an array of an
* object and method name. For other error modes this
* parameter is ignored.
* @param string Extra debug information. Defaults to the last
* query and native error code.
* @param string name of the method that triggered the error
*
* @return PEAR_Error instance of a PEAR Error object
*
* @access public
* @see PEAR_Error
*/
function &raiseError($code = null, $mode = null, $options = null, $userinfo = null, $method = null)
{
$userinfo = "[Error message: $userinfo]\n";
// The error is yet a MDB2 error object
if (PEAR::isError($code)) {
// because we use the static PEAR::raiseError, our global
// handler should be used if it is set
if (is_null($mode) && !empty($this->_default_error_mode)) {
$mode = $this->_default_error_mode;
$options = $this->_default_error_options;
}
if (is_null($userinfo)) {
$userinfo = $code->getUserinfo();
}
$code = $code->getCode();
} elseif (isset($this->connection)) {
if (!empty($this->last_query)) {
$userinfo.= "[Last executed query: {$this->last_query}]\n";
}
$native_errno = $native_msg = null;
list($code, $native_errno, $native_msg) = $this->errorInfo($code);
if (!is_null($native_errno) && $native_errno !== '') {
$userinfo.= "[Native code: $native_errno]\n";
}
if (!is_null($native_msg) && $native_msg !== '') {
$userinfo.= "[Native message: ". strip_tags($native_msg) ."]\n";
}
if (!is_null($method)) {
$userinfo = $method.': '.$userinfo;
}
}
$err =& PEAR::raiseError(null, $code, $mode, $options, $userinfo, 'MDB2_Error', true);
if ($err->getMode() !== PEAR_ERROR_RETURN
&& isset($this->nested_transaction_counter) && !$this->has_transaction_error) {
$this->has_transaction_error =& $err;
}
return $err;
}
// }}}
// {{{ function resetWarnings()
/**
* reset the warning array
*
* @return void
*
* @access public
*/
function resetWarnings()
{
$this->warnings = array();
}
// }}}
// {{{ function getWarnings()
/**
* Get all warnings in reverse order.
* This means that the last warning is the first element in the array
*
* @return array with warnings
*
* @access public
* @see resetWarnings()
*/
function getWarnings()
{
return array_reverse($this->warnings);
}
// }}}
// {{{ function setFetchMode($fetchmode, $object_class = 'stdClass')
/**
* Sets which fetch mode should be used by default on queries
* on this connection
*
* @param int MDB2_FETCHMODE_ORDERED, MDB2_FETCHMODE_ASSOC
* or MDB2_FETCHMODE_OBJECT
* @param string the class name of the object to be returned
* by the fetch methods when the
* MDB2_FETCHMODE_OBJECT mode is selected.
* If no class is specified by default a cast
* to object from the assoc array row will be
* done. There is also the possibility to use
* and extend the 'MDB2_row' class.
*
* @return mixed MDB2_OK or MDB2 Error Object
*
* @access public
* @see MDB2_FETCHMODE_ORDERED, MDB2_FETCHMODE_ASSOC, MDB2_FETCHMODE_OBJECT
*/
function setFetchMode($fetchmode, $object_class = 'stdClass')
{
switch ($fetchmode) {
case MDB2_FETCHMODE_OBJECT:
$this->options['fetch_class'] = $object_class;
case MDB2_FETCHMODE_ORDERED:
case MDB2_FETCHMODE_ASSOC:
$this->fetchmode = $fetchmode;
break;
default:
return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
'invalid fetchmode mode', __FUNCTION__);
}
return MDB2_OK;
}
// }}}
// {{{ function setOption($option, $value)
/**
* set the option for the db class
*
* @param string option name
* @param mixed value for the option
*
* @return mixed MDB2_OK or MDB2 Error Object
*
* @access public
*/
function setOption($option, $value)
{
if (array_key_exists($option, $this->options)) {
$this->options[$option] = $value;
return MDB2_OK;
}
return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
"unknown option $option", __FUNCTION__);
}
// }}}
// {{{ function getOption($option)
/**
* Returns the value of an option
*
* @param string option name
*
* @return mixed the option value or error object
*
* @access public
*/
function getOption($option)
{
if (array_key_exists($option, $this->options)) {
return $this->options[$option];
}
return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
"unknown option $option", __FUNCTION__);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -