?? common.php
字號:
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */// +----------------------------------------------------------------------+// | PHP Version 4 |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2004 The PHP Group |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/2_02.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +----------------------------------------------------------------------+// | Author: Stig Bakken <ssb@php.net> |// | Tomas V.V.Cox <cox@idecnet.com> |// | Maintainer: Daniel Convissor <danielc@php.net> |// +----------------------------------------------------------------------+//// $Id: common.php,v 1.5 2004/06/21 08:39:38 rurban Exp $require_once 'PEAR.php';/** * DB_common is a base class for DB implementations, and must be * inherited by all such * * @package DB * @version $Id: common.php,v 1.5 2004/06/21 08:39:38 rurban Exp $ * @category Database * @author Stig Bakken <ssb@php.net> * @author Tomas V.V.Cox <cox@idecnet.com> */class DB_common extends PEAR{ // {{{ properties /** * assoc of capabilities for this DB implementation * $features['limit'] => 'emulate' => emulate with fetch row by number * 'alter' => alter the query * false => skip rows * @var array */ var $features = array(); /** * assoc mapping native error codes to DB ones * @var array */ var $errorcode_map = array(); /** * DB type (mysql, oci8, odbc etc.) * @var string */ var $phptype; /** * @var string */ var $prepare_tokens; /** * @var string */ var $prepare_types; /** * @var string */ var $prepared_queries; /** * @var integer */ var $prepare_maxstmt = 0; /** * @var string */ var $last_query = ''; /** * @var integer */ var $fetchmode = DB_FETCHMODE_ORDERED; /** * @var string */ var $fetchmode_object_class = 'stdClass'; /** * Run-time configuration options. * * The 'optimize' option has been deprecated. Use the 'portability' * option instead. * * @see DB_common::setOption() * @var array */ var $options = array( 'persistent' => false, 'ssl' => false, 'debug' => 0, 'seqname_format' => '%s_seq', 'autofree' => false, 'portability' => DB_PORTABILITY_NONE, 'optimize' => 'performance', // Deprecated. Use 'portability'. ); /** * DB handle * @var resource */ var $dbh; // }}} // {{{ toString() /** * String conversation * * @return string * @access private */ function toString() { $info = strtolower(get_class($this)); $info .= ': (phptype=' . $this->phptype . ', dbsyntax=' . $this->dbsyntax . ')'; if ($this->connection) { $info .= ' [connected]'; } return $info; } // }}} // {{{ constructor /** * Constructor */ function DB_common() { $this->PEAR('DB_Error'); } // }}} // {{{ quoteString() /** * DEPRECATED: Quotes a string so it can be safely used within string * delimiters in a query * * @return string quoted string * * @see DB_common::quoteSmart(), DB_common::escapeSimple() * @deprecated Deprecated in release 1.2 or lower * @internal */ function quoteString($string) { $string = $this->quote($string); if ($string{0} == "'") { return substr($string, 1, -1); } return $string; } // }}} // {{{ quote() /** * DEPRECATED: Quotes a string so it can be safely used in a query * * @param string $string the input string to quote * * @return string The NULL string or the string quotes * in magic_quote_sybase style * * @see DB_common::quoteSmart(), DB_common::escapeSimple() * @deprecated Deprecated in release 1.6.0 * @internal */ function quote($string = null) { return ($string === null) ? 'NULL' : "'".str_replace("'", "''", $string)."'"; } // }}} // {{{ quoteIdentifier() /** * Quote a string so it can be safely used as a table or column name * * Delimiting style depends on which database driver is being used. * * NOTE: just because you CAN use delimited identifiers doesn't mean * you SHOULD use them. In general, they end up causing way more * problems than they solve. * * Portability is broken by using the following characters inside * delimited identifiers: * + backtick (<kbd>`</kbd>) -- due to MySQL * + double quote (<kbd>"</kbd>) -- due to Oracle * + brackets (<kbd>[</kbd> or <kbd>]</kbd>) -- due to Access * * Delimited identifiers are known to generally work correctly under * the following drivers: * + mssql * + mysql * + mysqli * + oci8 * + odbc(access) * + odbc(db2) * + pgsql * + sqlite * + sybase * * InterBase doesn't seem to be able to use delimited identifiers * via PHP 4. They work fine under PHP 5. * * @param string $str identifier name to be quoted * * @return string quoted identifier string * * @since 1.6.0 * @access public */ function quoteIdentifier($str) { return '"' . str_replace('"', '""', $str) . '"'; } // }}} // {{{ quoteSmart() /** * Format input so it can be safely used in a query * * The output depends on the PHP data type of input and the database * type being used. * * @param mixed $in data to be quoted * * @return mixed the format of the results depends on the input's * PHP type: * * <ul> * <li> * <kbd>input</kbd> -> <samp>returns</samp> * </li> * <li> * <kbd>null</kbd> -> the string <samp>NULL</samp> * </li> * <li> * <kbd>integer</kbd> or <kbd>double</kbd> -> the unquoted number * </li> * <li> * &type.bool; -> output depends on the driver in use * Most drivers return integers: <samp>1</samp> if * <kbd>true</kbd> or <samp>0</samp> if * <kbd>false</kbd>. * Some return strings: <samp>TRUE</samp> if * <kbd>true</kbd> or <samp>FALSE</samp> if * <kbd>false</kbd>. * Finally one returns strings: <samp>T</samp> if * <kbd>true</kbd> or <samp>F</samp> if * <kbd>false</kbd>. Here is a list of each DBMS, * the values returned and the suggested column type: * <ul> * <li> * <kbd>dbase</kbd> -> <samp>T/F</samp> * (<kbd>Logical</kbd>) * </li> * <li> * <kbd>fbase</kbd> -> <samp>TRUE/FALSE</samp> * (<kbd>BOOLEAN</kbd>) * </li> * <li> * <kbd>ibase</kbd> -> <samp>1/0</samp> * (<kbd>SMALLINT</kbd>) [1] * </li> * <li> * <kbd>ifx</kbd> -> <samp>1/0</samp> * (<kbd>SMALLINT</kbd>) [1] * </li> * <li> * <kbd>msql</kbd> -> <samp>1/0</samp> * (<kbd>INTEGER</kbd>) * </li> * <li> * <kbd>mssql</kbd> -> <samp>1/0</samp> * (<kbd>BIT</kbd>) * </li> * <li> * <kbd>mysql</kbd> -> <samp>1/0</samp> * (<kbd>TINYINT(1)</kbd>) * </li> * <li> * <kbd>mysqli</kbd> -> <samp>1/0</samp> * (<kbd>TINYINT(1)</kbd>) * </li> * <li> * <kbd>oci8</kbd> -> <samp>1/0</samp> * (<kbd>NUMBER(1)</kbd>) * </li> * <li> * <kbd>odbc</kbd> -> <samp>1/0</samp> * (<kbd>SMALLINT</kbd>) [1] * </li> * <li> * <kbd>pgsql</kbd> -> <samp>TRUE/FALSE</samp> * (<kbd>BOOLEAN</kbd>) * </li> * <li> * <kbd>sqlite</kbd> -> <samp>1/0</samp> * (<kbd>INTEGER</kbd>) * </li> * <li> * <kbd>sybase</kbd> -> <samp>1/0</samp> * (<kbd>TINYINT(1)</kbd>) * </li> * </ul> * [1] Accommodate the lowest common denominator because not all * versions of have <kbd>BOOLEAN</kbd>. * </li> * <li> * other (including strings and numeric strings) -> * the data with single quotes escaped by preceeding * single quotes, backslashes are escaped by preceeding * backslashes, then the whole string is encapsulated * between single quotes * </li> * </ul> * * @since 1.6.0 * @see DB_common::escapeSimple() * @access public */ function quoteSmart($in) { if (is_int($in) || is_double($in)) { return $in; } elseif (is_bool($in)) { return $in ? 1 : 0; } elseif (is_null($in)) { return 'NULL'; } else { return "'" . $this->escapeSimple($in) . "'"; } } // }}} // {{{ escapeSimple() /** * Escape a string according to the current DBMS's standards * * In SQLite, this makes things safe for inserts/updates, but may * cause problems when performing text comparisons against columns * containing binary data. See the * {@link http://php.net/sqlite_escape_string PHP manual} for more info. * * @param string $str the string to be escaped * * @return string the escaped string * * @since 1.6.0 * @see DB_common::quoteSmart() * @access public */ function escapeSimple($str) { return str_replace("'", "''", $str); } // }}} // {{{ provides() /** * Tell whether a DB implementation or its backend extension * supports a given feature * * @param array $feature name of the feature (see the DB class doc) * @return bool whether this DB implementation supports $feature * @access public */ function provides($feature) { return $this->features[$feature]; } // }}} // {{{ errorCode() /** * Map native error codes to DB's portable ones * * Requires that the DB implementation's constructor fills * in the <var>$errorcode_map</var> property.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -