⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db2.php

📁 Bug tracker, and reporter.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/** * Zend Framework * * LICENSE * * This source file is subject to version 1.0 of the Zend Framework * license, that is bundled with this package in the file LICENSE.txt, and * is available through the world-wide-web at the following URL: * http://framework.zend.com/license/new-bsd. If you did not receive * a copy of the Zend Framework license and are unable to obtain it * through the world-wide-web, please send a note to license@zend.com * so we can mail you a copy immediately. * * @package    Zend_Db * @subpackage Adapter * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License * *//** * @see Zend_Db */require_once 'Zend/Db.php';/** * @see Zend_Db_Adapter_Abstract */require_once 'Zend/Db/Adapter/Abstract.php';/** * @see Zend_Db_Statement_Db2 */require_once 'Zend/Db/Statement/Db2.php';/** * @package    Zend_Db * @copyright  Copyright (c) 2005-2008 Zend Technologies Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License * @author     Joscha Feth <jffeth@de.ibm.com> * @author     Salvador Ledezma <ledezma@us.ibm.com> */class Zend_Db_Adapter_Db2 extends Zend_Db_Adapter_Abstract{    /**     * User-provided configuration.     *     * Basic keys are:     *     * username   => (string)  Connect to the database as this username.     * password   => (string)  Password associated with the username.     * host       => (string)  What host to connect to (default 127.0.0.1)     * dbname     => (string)  The name of the database to user     * protocol   => (string)  Protocol to use, defaults to "TCPIP"     * port       => (integer) Port number to use for TCP/IP if protocol is "TCPIP"     * persistent => (boolean) Set TRUE to use a persistent connection (db2_pconnect)     *     * @var array     */    protected $_config = array(        'dbname'       => null,        'username'     => null,        'password'     => null,        'host'         => 'localhost',        'port'         => '50000',        'protocol'     => 'TCPIP',        'persistent'   => false    );    /**     * Execution mode     *     * @var int execution flag (DB2_AUTOCOMMIT_ON or DB2_AUTOCOMMIT_OFF)     */    protected $_execute_mode = DB2_AUTOCOMMIT_ON;    /**     * Keys are UPPERCASE SQL datatypes or the constants     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.     *     * Values are:     * 0 = 32-bit integer     * 1 = 64-bit integer     * 2 = float or decimal     *     * @var array Associative array of datatypes to values 0, 1, or 2.     */    protected $_numericDataTypes = array(        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,        'INTEGER'            => Zend_Db::INT_TYPE,        'SMALLINT'           => Zend_Db::INT_TYPE,        'BIGINT'             => Zend_Db::BIGINT_TYPE,        'DECIMAL'            => Zend_Db::FLOAT_TYPE,        'NUMERIC'            => Zend_Db::FLOAT_TYPE    );    /**     * Creates a connection resource.     *     * @return void     */    protected function _connect()    {        if (is_resource($this->_connection)) {            // connection already exists            return;        }        if (!extension_loaded('ibm_db2')) {            /**             * @see Zend_Db_Adapter_Db2_Exception             */            require_once 'Zend/Db/Adapter/Db2/Exception.php';            throw new Zend_Db_Adapter_Db2_Exception('The IBM DB2 extension is required for this adapter but the extension is not loaded');        }        if ($this->_config['persistent']) {            // use persistent connection            $conn_func_name = 'db2_pconnect';        } else {            // use "normal" connection            $conn_func_name = 'db2_connect';        }        if (!isset($this->_config['driver_options']['autocommit'])) {            // set execution mode            $this->_config['driver_options']['autocommit'] = &$this->_execute_mode;        }        if (isset($this->_config['options'][Zend_Db::CASE_FOLDING])) {            $caseAttrMap = array(                Zend_Db::CASE_NATURAL => DB2_CASE_NATURAL,                Zend_Db::CASE_UPPER   => DB2_CASE_UPPER,                Zend_Db::CASE_LOWER   => DB2_CASE_LOWER            );            $this->_config['driver_options']['DB2_ATTR_CASE'] = $caseAttrMap[$this->_config['options'][Zend_Db::CASE_FOLDING]];        }        if ($this->_config['host'] !== 'localhost') {            // if the host isn't localhost, use extended connection params            $dbname = 'DRIVER={IBM DB2 ODBC DRIVER}' .                     ';DATABASE=' . $this->_config['dbname'] .                     ';HOSTNAME=' . $this->_config['host'] .                     ';PORT='     . $this->_config['port'] .                     ';PROTOCOL=' . $this->_config['protocol'] .                     ';UID='      . $this->_config['username'] .                     ';PWD='      . $this->_config['password'] .';';            $this->_connection = $conn_func_name(                $dbname,                null,                null,                $this->_config['driver_options']            );        } else {            // host is localhost, so use standard connection params            $this->_connection = $conn_func_name(                $this->_config['dbname'],                $this->_config['username'],                $this->_config['password'],                $this->_config['driver_options']            );        }        // check the connection        if (!$this->_connection) {            /**             * @see Zend_Db_Adapter_Db2_Exception             */            require_once 'Zend/Db/Adapter/Db2/Exception.php';            throw new Zend_Db_Adapter_Db2_Exception(db2_conn_errormsg(), db2_conn_error());        }    }    /**     * Force the connection to close.     *     * @return void     */    public function closeConnection()    {        db2_close($this->_connection);        $this->_connection = null;    }    /**     * Returns an SQL statement for preparation.     *     * @param string $sql The SQL statement with placeholders.     * @return Zend_Db_Statement_Db2     */    public function prepare($sql)    {        $this->_connect();        $stmt = new Zend_Db_Statement_Db2($this, $sql);        $stmt->setFetchMode($this->_fetchMode);        return $stmt;    }    /**     * Gets the execution mode     *     * @return int the execution mode (DB2_AUTOCOMMIT_ON or DB2_AUTOCOMMIT_OFF)     */    public function _getExecuteMode()    {        return $this->_execute_mode;    }    /**     * @param integer $mode     * @return void     */    public function _setExecuteMode($mode)    {        switch ($mode) {            case DB2_AUTOCOMMIT_OFF:            case DB2_AUTOCOMMIT_ON:                $this->_execute_mode = $mode;                db2_autocommit($this->_connection, $mode);                break;            default:                /**                 * @see Zend_Db_Adapter_Db2_Exception                 */                require_once 'Zend/Db/Adapter/Db2/Exception.php';                throw new Zend_Db_Adapter_Db2_Exception("execution mode not supported");                break;        }    }    /**     * Quote a raw string.     *     * @param string $value     Raw string     * @return string           Quoted string     */    protected function _quote($value)    {        if (is_int($value) || is_float($value)) {            return $value;        }        /**         * Use db2_escape_string() if it is present in the IBM DB2 extension.         * But some supported versions of PHP do not include this function,         * so fall back to default quoting in the parent class.         */        if (function_exists('db2_escape_string')) {            return "'" . db2_escape_string($value) . "'";        }        return parent::_quote($value);    }    /**     * @return string     */    public function getQuoteIdentifierSymbol()    {        $this->_connect();        $info = db2_server_info($this->_connection);        $identQuote = $info->IDENTIFIER_QUOTE_CHAR;        return $identQuote;    }    /**     * Returns a list of the tables in the database.     *     * @return array     */    public function listTables()    {        $this->_connect();        // take the most general case and assume no z/OS        // since listTables() takes no parameters        $stmt = db2_tables($this->_connection);        $tables = array();        while ($row = db2_fetch_assoc($stmt)) {            $tables[] = $row['TABLE_NAME'];        }        return $tables;    }    /**     * Returns the column descriptions for a table.     *     * The return value is an associative array keyed by the column name,     * as returned by the RDBMS.     *     * The value of each array element is an associative array     * with the following keys:     *     * SCHEMA_NAME      => string; name of database or schema     * TABLE_NAME       => string;     * COLUMN_NAME      => string; column name     * COLUMN_POSITION  => number; ordinal position of column in table     * DATA_TYPE        => string; SQL datatype name of column     * DEFAULT          => string; default expression of column, null if none     * NULLABLE         => boolean; true if column can have nulls     * LENGTH           => number; length of CHAR/VARCHAR     * SCALE            => number; scale of NUMERIC/DECIMAL     * PRECISION        => number; precision of NUMERIC/DECIMAL     * UNSIGNED         => boolean; unsigned property of an integer type

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -